stack相关内容

Android:清除后退堆栈

在 Android 中,我有一些活动,比如 A、B、C. 在 A 中,我使用此代码打开 B: Intent intent = new Intent(this, B.class);开始活动(意图); 在B中,我用这个代码打开C: Intent intent = new Intent(this, C.class);开始活动(意图); 当用户点击 C 中的按钮时,我想返回 A 并清除返回堆 ..
发布时间:2021-11-27 13:09:58 移动开发

Java 中的转义分析

据我所知,JVM 使用转义分析来获得某些性能优化 类似于锁粗化和锁省略.我很感兴趣 JVM 是否有可能决定使用转义分析在堆栈上分配任何特定对象. 一些资源让我觉得我是对的.是否有 JVM 真正做到这一点? 解决方案 我不认为它对堆栈分配进行逃逸分析.例子: public class EscapeAnalysis {私有静态类 Foo {私有整数 x;私有静态整数计数器;公共 Foo ..
发布时间:2021-11-27 08:09:48 Java开发

为什么编译器在堆栈中分配的比需要的多?

我有一个简单的 C 程序.比方说,例如,我有一个 int 和一个长度为 20 的 char 数组.我总共需要 24 个字节. int main(){字符缓冲区[20];整数 x = 0;缓冲区[0] = 'a';缓冲区[19] = 'a';} 堆栈需要与 16 字节边界对齐,因此我假设编译器将保留 32 字节.但是当我用 gcc x86-64 编译这样的程序并读取输出程序集时,编译器保留了 6 ..
发布时间:2021-11-27 08:08:30 其他开发

为什么使用 alloca() 不被认为是好的做法?

alloca() 在堆栈上而不是在堆上分配内存,就像 malloc() 的情况一样.因此,当我从例程返回时,内存被释放.所以,实际上这解决了我释放动态分配内存的问题.释放通过 malloc() 分配的内存是一个令人头疼的问题,如果以某种方式错过会导致各种内存问题. 尽管具有上述特性,为什么不鼓励使用 alloca()? 解决方案 答案就在 man 页面(至少在 Linux): ..
发布时间:2021-11-27 08:08:12 其他开发

Java 中的深度递归导致堆栈溢出?

在对函数式语言有了一些经验之后,我开始在 Java 中更多地使用递归 - 但该语言似乎具有大约 1000 个相对较浅的调用堆栈. 有没有办法让调用栈变大?就像我可以创建数百万次调用深度的函数,就像在 Erlang 中一样? 我在解决欧拉项目问题时越来越注意到这一点. 谢谢. 解决方案 我猜你可以使用这些参数 -ss Stacksize 增加原生堆栈大小或 -o ..
发布时间:2021-11-25 19:09:45 Java Web开发

如何增加Java堆栈大小?

我问这个问题是为了了解如何增加 JVM 中的运行时调用堆栈大小.我已经得到了这个答案,而且我还得到了许多与 Java 如何处理需要大型运行时堆栈的情况相关的有用答案和评论.我已经用回复摘要扩展了我的问题. 最初我想增加 JVM 堆栈大小,这样程序就可以在没有 StackOverflowError 的情况下运行. 公共类 TT {公共静态长事实(int n){返回 n 相应的配置设置是j ..
发布时间:2021-11-25 11:37:40 Java Web开发

在 Swing 中实现后退/前进按钮

我有一个简单的问题. 我对 Swing 有了一些经验,最简单的方法是绘制一个相当大的 GUI. 作为 GUI 的一部分,我想要前进和后退按钮.我尝试采用的方法是实现将当前 JPanel 推送到堆栈并检索先前值的方法(正向或反向(因此有 2 个堆栈)).我无法让它工作.也许我完全以错误的方式来处理它,或者堆栈不能以我使用它的方式使用.无论哪种情况,这都让我很烦恼.我想可能有更简单的方法, ..
发布时间:2021-11-25 11:35:50 Java Web开发

为什么 Java Vector(和 Stack)类被认为已过时或已弃用?

为什么 Java Vector 被视为遗留类、已过时或已弃用? 它在处理并发时是否有效? 如果我不想手动同步对象而只想使用线程安全的集合而无需制作底层数组的新副本(如 CopyOnWriteArrayList 所做的那样),那么它是可以使用 Vector 吗? Stack怎么样,它是Vector的子类,应该用什么代替? 解决方案 Vector 在每个单独的操作上同步.这几 ..
发布时间:2021-11-25 10:20:33 Java Web开发

如何增加Java堆栈大小?

我问这个问题是为了了解如何增加 JVM 中的运行时调用堆栈大小.我已经得到了这个答案,而且我还得到了许多与 Java 如何处理需要大型运行时堆栈的情况相关的有用答案和评论.我已经用回复摘要扩展了我的问题. 最初我想增加 JVM 堆栈大小,这样程序就可以在没有 StackOverflowError 的情况下运行. 公共类 TT {公共静态长事实(int n){返回 n 相应的配置设置是j ..
发布时间:2021-11-19 22:48:50 Java Web开发

在 Swing 中实现后退/前进按钮

我有一个简单的问题. 我对 Swing 有了一些经验,最简单的方法是绘制一个相当大的 GUI. 作为 GUI 的一部分,我想要前进和后退按钮.我尝试采用的方法是实现将当前 JPanel 推送到堆栈并检索先前值的方法(正向或反向(因此有 2 个堆栈)).我无法让它工作.也许我完全以错误的方式来处理它,或者堆栈不能以我使用它的方式使用.无论哪种情况,这都让我很烦恼.我想可能有更简单的方法, ..
发布时间:2021-11-19 22:48:16 Java Web开发

为什么 Java Vector(和 Stack)类被认为已过时或已弃用?

为什么 Java Vector 被视为遗留类、已过时或已弃用? 它在处理并发时是否有效? 如果我不想手动同步对象而只想使用线程安全的集合而无需制作底层数组的新副本(如 CopyOnWriteArrayList 所做的那样),那么它是可以使用 Vector 吗? Stack怎么样,它是Vector的子类,应该用什么代替? 解决方案 Vector 在每个单独的操作上同步.这几 ..
发布时间:2021-11-19 22:27:54 Java Web开发

基于数组与基于列表的堆栈和队列

当同时实现为数组和链表时,我试图比较堆栈和队列操作的增长率(包括运行时间和空间).到目前为止,我只能找到队列 pop() 的平均情况运行时间,但没有任何内容全面探索这两种数据结构并比较它们的运行时间/空间行为.> 具体来说,我希望比较队列和堆栈的 push() 和 pop(),实现为 both 数组和链表(因此 2 个操作 x 2 个结构 x 2 个实现,或 8 个值). 此外,我很欣赏这 ..
发布时间:2021-11-18 04:48:27 其他开发

基于数组与基于列表的堆栈和队列

当同时实现为数组和链表时,我试图比较堆栈和队列操作的增长率(包括运行时间和空间).到目前为止,我只能找到队列 pop() 的平均情况运行时间,但没有任何内容全面探索这两种数据结构并比较它们的运行时间/空间行为.> 具体来说,我希望比较队列和堆栈的 push() 和 pop(),实现为 both 数组和链表(因此 2 个操作 x 2 个结构 x 2 个实现,或 8 个值). 此外,我很欣赏这 ..
发布时间:2021-11-18 04:48:15 其他开发

堆栈溢出 Visual C++,可能是数组大小?

据我所知,这不是由无限递归引起的. 该程序在较小的数组下正常运行(它是一个音频编辑器).现在我增加了允许更大数组的功能(最多 5 分钟的音频,26460000 条 16 位数据 ~50mb). 自从增加数组的大小后,我收到了一个特定函数的堆栈溢出错误,它应该通过将数组向后写入新数组来反转输入文件的播放,然后覆盖原始数组.我猜每个数组可能高达 50MB,这可能是问题所在: //初始化临 ..
发布时间:2021-11-18 04:45:17 其他开发

std::array<>只保证在堆栈上分配?

std::array(我没有使用 new)是否保证在 C++ 标准中分配在堆栈中而不是堆中? 明确地说,我的意思不是 new std::array.我主要想知道,是否允许标准库在其实现中使用 new. 解决方案 我在标准中找不到更明确的答案,但是 [array.overview]/2: 一个数组是一个聚合([dcl.init.aggr]),它可以用最多N个元素进行列表初始化类型 ..
发布时间:2021-11-18 03:24:58 其他开发

Java ArrayList 如何在开头添加元素

我需要将元素添加到 ArrayList 队列,但是当我调用函数添加元素时,我希望它在数组的开头添加元素(因此它具有最低索引),如果数组有 10 个元素,则添加一个新元素会导致删除最旧的元素(索引最高的元素). 大家有什么建议吗? 解决方案 List 有方法 add(int, E),所以你可以使用: list.add(0, yourObject); 之后你可以删除最后一个元素: ..
发布时间:2021-11-18 02:52:58 其他开发

在堆栈上声明大数组

我正在使用 Dev C++ 编写一个模拟程序.为此,我需要声明一个数据类型为 double 的一维数组.它包含 4200000 元素 - 比如 double n[4200000]. 编译器没有显示错误,但程序在执行时退出.我已经检查过,对于具有 5000 元素的数组,程序执行得很好. 现在,我知道不建议在堆栈上声明如此大的数组.但是,问题是模拟需要我多次调用数组中的特定元素 - 例如, ..
发布时间:2021-11-18 01:56:01 其他开发

char *str="STRING" 之间的区别和字符 str[] = “字符串"?

在编写一个简单的函数以从字符串中删除特定字符时,我遇到了这个奇怪的问题: void str_remove_chars( char *str, char to_remove){if(str && to_remove){字符 *ptr = str;字符 *cur = str;while(*ptr != '\0'){if(*ptr != to_remove){如果(ptr != cur){Cur[0] ..
发布时间:2021-11-18 01:28:38 其他开发

声明大数组时出现堆栈溢出异常

以下代码为我生成了堆栈溢出错误 int main(int argc, char* argv[]){int筛[2000000];返回0;} 我该如何解决这个问题?我正在使用 Turbo C++,但希望将我的代码保留在 C 中 编辑: 谢谢你的建议.上面的代码只是举例,我实际上在函数中而不是在 sub main 中声明了数组.此外,我需要将数组初始化为零,所以当我在谷歌上搜索 mall ..
发布时间:2021-11-18 00:53:04 其他开发