C “什么是”呢;堆栈鞭打“;?
什么是“堆叠打击”?还是“一堆鞭打”?(因为我不知道它的定义,所以我不确定它是可数的还是不可数的。)我从来没有遇到过这个词,谷歌和维基百科的热门搜索也没有描述它 然而,它似乎类似于磁盘,磁盘的使用效率很低。这并不直接适用于不符合任何机械要求的堆栈。也许这与页面错误有关,这将导致机械效率低下的关系。或者通过一些昂贵的执行/内核补救措施纠正堆栈溢出C “什么是”呢;堆栈鞭打“;?,c,embedded,C,Embedded,什么是“堆叠打击”?还是“一堆鞭打”?(因为我不知道它的定义,所以我不确定它是可数的还是不可数的。)我从来没有遇到过这个词,谷歌和维基百科的热门搜索也没有描述它 然而,它似乎类似于磁盘,磁盘的使用效率很低。这并不直接适用于不符合任何机械要求的堆栈。也许这与页面错误有关,这将导致机械效率低下的关系。或者通过一些昂贵的执行/内核补救措施纠正堆栈溢出 该术语的一些上下文可能会有所帮助。我在Forth的上下文中看到过这个术语,在Forth的上下文中,缺少堆栈帧访问有时需要过度使用堆栈操作(“抖动堆栈”)
该术语的一些上下文可能会有所帮助。我在Forth的上下文中看到过这个术语,在Forth的上下文中,缺少堆栈帧访问有时需要过度使用堆栈操作(“抖动堆栈”)才能到达堆栈顶部的某些字 此外,还将其定义为“频繁的堆栈扩展(溢出)和收缩(下溢)”。这显然是一个需要进一步解释的定义。也许更熟悉克雷X1的人可以解释 我在stack guards的上下文中听到了术语“stack thrashing”,但我认为它更常被称为“stack smashing”。堆栈破坏是指任何类型的利用堆栈漏洞(如)。这就是为什么GCC堆栈保护被称为SSP()。我曾经听到过“破坏堆栈”(没有第一个h)的意思,即“破坏堆栈”,例如,当一个函数从堆栈中获取/放入的字节数超过它应该得到的字节数时,会弄乱堆栈指针,使另一个函数此后无法正常工作
当您使用错误的调用约定调用外部函数时(例如,当dll中的函数是stdcall但您将其声明为cdecl时),或者当您调用可变函数(如printf或scanf)时传递错误的格式字符串时,可能会发生这种情况,因此,它会弹出更多/更少的字节。我确信这个词完全是口语化的,没有确切的含义。您是否有特定的引文或链接,指向您看到它被使用的地方 在没有任何精确的技术定义的情况下,我建议它的意思是该术语的使用者认为它意味着什么。我认为它可以应用于堆栈的任何滥用或低效使用,但由于堆栈操作中通常发生的所有情况都是堆栈指针被移动,因此很难定义什么会构成“垃圾”,而这不仅仅是正常和可取的行为
在每个线程都有自己的堆栈的多线程应用程序中,上下文切换也意味着堆栈的快速切换,但该事件完全可以用术语“任务抖动”来描述,不那么含糊。堆栈抖动类似于堆抖动,但在堆栈上 好了,现在解释清楚了 哦,你想知道更多细节吗 如果您在一个非堆栈处理器上模拟一个基于堆栈的处理器,那么您就是在破坏堆栈 如果你的C代码malloc's和free's每隔一行代码,你就是在砸堆 堆栈抖动的问题在于,如果你分析了你的代码,CPU会花费几乎所有的时间来弹出和推送 对于堆抖动,malloc()和free()是最常用的#1和#2函数 现在,一些CPU(rockwell make some)实际上已经过优化,可以在硬件中运行基于堆栈的语言
- 内部ram,用于在CPU内缓存堆栈的前N千字节
- 很少登记
- 所有指令都是相对堆栈的
这有帮助吗?这不是我听过的一个短语-上下文是什么?我听说有人说他们“破坏了堆栈”,这意味着他们访问了一个错误的指针并重写了一些堆栈,导致程序以奇怪而令人兴奋(并且难以调试)的方式崩溃。我通常听说这被称为“破坏堆栈”。垃圾或鞭打。。在我看来,这可能有点像堆栈破坏。nt Sure我也听说过“缓存破坏”或“页面破坏”…@John,是的,这也很常见。我也听过“记忆跺脚”。如果我再次找到原始引用,我会尝试一下这个定义,看看它是否合适。但它肯定是有道理的,承认我写了“thrash”并按原样解决了问题和关键词,并且与这个词的英语定义一致。非常感谢你,蒂姆。我知道,但因为我从没听说过,我想也许他听错了。