Tag: 堆栈

堆栈是向上还是向下?

我有这段代码在c: int q = 10; int s = 5; int a[3]; printf("Address of a: %d\n", (int)a); printf("Address of a[1]: %d\n", (int)&a[1]); printf("Address of a[2]: %d\n", (int)&a[2]); printf("Address of q: %d\n", (int)&q); printf("Address of s: %d\n", (int)&s); 输出是: Address of a: 2293584 Address of a[1]: 2293588 Address of a[2]: 2293592 Address of q: 2293612 Address of […]

何时使用Requirejs以及何时使用捆绑的JavaScript?

这可能是一个愚蠢的问题,networking家伙。 但是我对此有点困惑。 现在,我有一个应用程序,我正在使用几个JavaScript文件来执行不同的任务。 现在,我正在使用Javascript 捆绑器来合并和缩小所有的文件。 所以,在运行时将只有一个app.min.js文件。 现在, Requirejs被用来在运行时加载模块或文件。 所以,问题是如果我已经在一个文件中的所有东西,那么我需要requirejs? 或者,我可以使用requirejs和/或bundler的用例场景是什么? 请让我知道是否需要进一步的细节。

如何从Delphi程序或编译器生成的debugging信息中提取本地variables信息(地址和types)?

我的目标是: 给定一个Delphi编译的32位或64位Windows程序中挂起的线程,走栈(可行) 给定堆栈条目,枚举每个方法中的局部variables及其值。 也就是说,至less可以find他们的地址和types(整数32/64 /有符号/无符号,string,浮点,logging,类…)的组合可以用来find它们的值。 第一个很好,这是第二个问题。 在很高的层次上, 如何在Delphi中给出一个堆栈条目来枚举局部variables? 在低层次,这是我一直在调查: RTTI:不列出这种方法的信息。 这不是我曾经认为是一个现实的select,但无论如何这里列出。 debugging信息:加载为debugging版本生成的debugging信息。 地图文件:即使是一个详细的地图文件(一个文本格式的文件!打开一个,看看)不包含本地variables信息。 这基本上是地址和源文件行号的列表。 非常适合地址到文件和行相关,例如排水沟中的蓝点; 不是很好的更详细的信息 远程debugging信息(RSM文件) – 没有关于其内容或格式的已知信息 。 TD32 / TDS文件:我目前的研究。 它们包含许多其他信息中的全球和地方符号。 我遇到的问题是: 没有关于TD32文件格式的文档(我可以find)。 我对他们的大部分知识来自使用它们的Jedi JCL代码(JclTD32.pas),我不知道如何使用该代码,或者结构是否足够显示本地variables。 我很确定它会处理全球符号,但我对本地的情况很不确定。 有很多定义的常量,没有格式的文档,阅读它们的意思,我只是猜测。 然而,这些常数和他们的名字必须来自某个地方。 我可以find使用TDS信息源不加载或处理本地符号。 如果这是正确的方法,那么这个问题就变成了:“TDS / TD32文件格式是否有文档,有没有加载局部variables的代码示例? 代码示例不是必需的,但可能非常有用,即使它非常小。

数组,堆和堆栈和值types

int[] myIntegers; myIntegers = new int[100]; 在上面的代码中,是新的int [100]在堆上生成数组? 从我读过的CLR通过C#,答案是肯定的。 但是我不能理解的是,在数组里面发生了什么。 因为它们是值types,所以我想它们必须被装箱,例如,将myInteger传递给程序的其他部分,并且如果它们始终保留在堆栈上,就会混乱堆栈。 还是我错了? 我想他们只是装盒子,只要arrays存在就会活在堆上。

使用两个队列实现堆栈

之前有人问过类似的问题,但这里的问题与之相反,使用两个队列作为堆栈。 这个问题… 给定两个标准操作(入enqueue , dequeue , isempty , size )的isempty ,用标准操作( pop , push , isempty , size )实现一个栈。 应该有两个版本的解决scheme。 版本A :推送物品时堆叠应该是有效的; 和 版本B :popup一个项目时,堆栈应该是有效的。 我比任何特定的语言实现更感兴趣的algorithm。 不过,我欢迎用我熟悉的语言( java , c# , python , vb , javascript , php )expression的解决scheme。

分段错误和堆栈溢出有什么区别?

例如,当我们调用say,recursion函数时,连续的调用被存储在堆栈中。 但是,如果无限地发生错误,则错误是“分段错误”(如GCC上所示)。 它不应该是“堆栈溢出”? 那么两者的基本区别是什么呢? 顺便说一句,解释将比维基百科链接更有用(通过了,但没有答案的具体查询)。

Android应用程序类生命周期

我正在处理的Android应用程序覆盖Application类来存储轻量级状态(用户名,gps位置等)在静态variables中。 这个状态的大部分是在启动活动的OnCreate中设置的(从prefs,位置侦听器运行中检索的用户名)。 依靠启动活动来初始化应用程序类是否安全? 是否有任何情况下应用程序类可能会重新创build没有启动活动也被创build? 这个问题出现了,因为我碰到一个空指针exception,在手机睡了几个小时之后(在手机进入睡眠状态前应用程序被留在前台),在应用程序类中访问一个variables以恢复应用程序。 是否有可能在电话进入睡眠状态并唤醒电话的过程中死亡,应用程序类重新创build,堆栈中的顶级活动恢复,但启动activity.onCreate未运行,因此Application类没有初始化? 请注意,我试图通过强制应用程序停止使用设置/pipe理应用程序来testing这些情况。 但是,我无法重现这个问题。 在下一次运行中,将创buildApplication类,然后是启动activity.onCreate。 假设应用程序类实例只要进程存在就可以安全地存在,并且在创build应用程序类时等同于“重新启动”应用程序。 从一个新的活动堆栈开始(堆栈上的第一个活动是启动活动)?

R中的parent.frame()和parent.env()有什么不同? 他们如何在参考呼叫方面有所不同?

如果有人可以用一个简单的例子来说明这一点会有帮助吗? 另外,使用parent.frame()而不是parent.env() ,反之亦然。

内存分配:堆栈还是堆?

我对堆栈与堆之间的内存分配基础感到困惑。 根据标准定义(每个人都说),所有的值types将被分配到一个堆栈,并且引用types将被放入堆中 。 现在考虑下面的例子: class MyClass { int myInt = 0; string myString = "Something"; } class Program { static void Main(string[] args) { MyClass m = new MyClass(); } } 现在,如何在C#中发生内存分配? MyClass的对象(即m )是否会被完全分配给堆? 那是int myInt和string myString都会去堆? 或者,该对象将被分成两部分,并且将被分配到两个存储位置,堆栈和堆?

c ++ Vector,每当它在堆栈上展开/重新分配时会发生什么?

我是新来的C + +,我在我的项目上使用vector类。 我发现它非常有用,因为我可以有一个数组,在必要时自动重新分配(例如,如果我想push_back一个项目,并且vector已经达到了最大容量,它会重新分配自己,向操作系统请求更多的内存空间)访问vector的元素非常快(它不像列表,为了达到“第n个”元素,我必须通过“n”个第一个元素)。 我发现这个问题非常有用,因为他们的答案完美地解释了“内存分配器”是如何工作的,当我想把我的vector存储在堆/栈上时: [1] vector<Type> vect; [2] vector<Type> *vect = new vector<Type>; [3] vector<Type*> vect; 然而,有一个疑问是困扰我一段时间,我无法find答案:每当我构build一个向量,并开始推入大量的项目,它会达到vector将满的一刻,所以继续增长它将需要重新分配,复制自己到一个新的位置,然后继续push_back项目(显然,这个重新分配它隐藏在类的实现,所以它是完全透明的我) 好的,如果我已经在堆上创build了这个向量[2],我不会想象会发生什么事情:类向量调用malloc,获取新的空间,然后将自身复制到新的内存中,最后删除自由调用的旧内存。 然而,当我在栈上构造一个向量时,面纱隐藏了发生的事情:当向量必须重新分配时,会发生什么? AFAIK,无论何时在C / C ++中input一个新的函数,计算机都会查看variables的声明,然后展开堆栈以获得必要的空间来放置这些variables,但是在堆栈中不能分配更多的空间function已经在运行。 类vector如何解决这个问题?