stack相关内容

Go怎么没有stackoverflows

我在此演示文稿中阅读了 http://golang.org/doc/ExpressivenessOfGo.pdf 第42页: 安全 - 没有堆栈溢出 这怎么可能?和/或Go如何工作以避免这种情况? 解决方案 这是一个称为“分段堆栈”的功能:每个goroutine都有自己的堆栈,在堆上分配。 在最简单的情况下,编程语言实现为每个进程/地址空间使用一个堆栈,通常使用称为 ..

C ++中的全局变量是存储在堆栈,堆还是都不存储?

我在星期二进行了一次考试,我注意到,这个问题是我的老师在他的文章中提出的很多问题。 起初我非常肯定,正确的答案必须是“无”,因为全局变量存储在数据存储器中,但是我发现这个本书来自Robert Lafore,名为“面向对象的C ++编程”,它明确指出,根据C ++标准,全局变量存储在堆中。现在我很困惑,不能真正弄清楚问题的正确答案。 为什么全局变量会存储在堆上?我错过了什么? 在此 ..
发布时间:2018-05-02 10:34:56 C/C++开发

Ada泛型在运行时

你如何在运行时实例化一个泛型而不是在编译时。没有使用新的例子。 解决方案 如果不使用 new ,则无法执行此操作。您可以在任何声明部分执行该操作,但是该通用部分仅在该声明部分的范围内存在。 例如(不是编译好的ada-like伪代码): get(length) declare package stack is new stack_generic(max_stack_siz ..
发布时间:2018-04-21 19:17:55 其他开发

属于不同于进程堆栈的线程的堆栈如何?

如果我看到 / proc / ,那么有人可以告诉我这两种堆栈有什么不同。 pid> / map 和 proc / pid / task / 我看到了相同的地图。有没有一种方法可以看到属于线程的堆栈(我的意思不是堆栈的进程线程),或者是否有任何gdb命令来查找线程特定的堆栈。 感谢, Kapil 解决方案 有没有办法可以看到堆栈属于线程独占 没有这样的事情 ..
发布时间:2018-04-21 15:01:32 其他开发

如何使用GDB查看存储在堆栈上的变量

我试图找出存储在GDB堆栈某个地方的东西。我有一个声明: cmpl $ 0x176,-0x10(%ebp) 在这个函数中,我将0x176与-0x10(%ebp)进行比较,我想知道是否有办法查看存储在 - 0x10(%ebp)。 解决方案 我想知道是否有办法看到什么是存储在-0x10(%ebp)。 假设您已经使用调试信息编译, info local ..
发布时间:2018-04-21 14:48:13 其他开发

gdb堆栈奇怪

(gdb)bt #0 0x00002b36465a5d4c在AY16_Loop_M16中(有时) )from /opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_mc.so #1 0x00000000000021da in ?? () #2 0x00000000000021da在? () #3 0xbf3e9dec2f04aeff在?? () #4 0xbf4 ..
发布时间:2018-04-21 14:47:03 其他开发

我如何用GDB检查堆栈框架?

现在我一直在使用GDB反汇编一个二进制文件,并检查出不同的寄存器和其他内容。是否有简单的命令来检查堆栈中的所有内容?这可以限制在一个函数中的所有内容吗? 解决方案 对于当前的堆栈帧: 信息框架列出有关框架的一般信息(其中内容始于内存等)。 info locals 列出存储在框架中的局部变量 ul> ..
发布时间:2018-04-21 14:20:05 其他开发

gcc如何确定基于C的函数将使用的堆栈大小?

我用C编程语言编写程序,并使用objdump将可执行文件转换为asm文件。我不知道gcc如何确定函数将使用的堆栈大小? int a() { int temp [1024 * 1024]; temp [0] = 1; return temp [0]; } 这只是为了解释问题,忽略它是天真的。 gcc是否会为函数a分配真正的1024 * 1024字节空间? ..
发布时间:2018-04-21 10:34:45 其他开发

gcc -mpreferred-stack-boundary选项

我想知道GNU编译器编译过程中 -mpreferred-stack-boundary 选项的用处。我查过了文档,但是我的解释没有了。有人可以解释它。 解决方案 我想知道使用-mpreferred-stack GNU调试器中编译期间的边界选项。 该选项对调试器没有任何作用。 它会影响二进制代码。默认情况下,GCC会安排一些东西,以便每个函数在进入时立即使其堆栈指针在16字节边 ..
发布时间:2018-04-20 17:26:18 服务器开发

在Ubuntu 11.04中禁用堆栈碎片保护

我在2007年的MacBook上运行32位Ubuntu 11.04,并开始学习缓冲区溢出漏洞。我试图从书中运行示例程序,但是Ubuntu的安全措施使我无法成功执行缓冲区溢出。这是我试图运行的代码: #include #include #include char shellcode [] = “\x31\xc0\x ..
发布时间:2018-04-20 16:53:37 其他开发

如何在GCC的32字节边界处对齐堆栈?

我使用基于GCC 4.6.1的Windows 64位目标的MinGW64版本。我正在玩新的英特尔AVX指令。我的命令行参数是 -march = corei7-avx -mtune = corei7-avx -mavx 。 但是在堆栈中分配局部变量时,我开始遇到分段错误错误。 GCC使用对齐的移动 VMOVAPS 和 VMOVAPD 移动 __ m256 和 __ m256d 左右,这些指令需 ..
发布时间:2018-04-20 16:45:00 其他开发

垃圾收集器是收集堆栈内存还是堆内存?

我读了很多关于垃圾收集的文章,几乎所有文章都讲述了堆内存。所以我的问题是“垃圾回收收集堆栈内存或堆内存或两者兼而有之”。 解决方案 它收集堆内存。通常,当执行路径到达作用域的末尾时,堆栈内存会自动收集 。例如: void fun() { int n; //在堆栈中作为激活记录的一部分保留 ... } //将堆栈指针返回到它进入作用域之前的位置 事实上,在像C ..

垃圾收集 - 根节点

我最近阅读了关于垃圾回收的小部分内容(大部分是用Java写的),有一个问题仍然没有答案:JVM(或者一般的运行时系统)如何跟踪当前的活动对象? 我知道那里的对象是当前在堆栈中的对象,所以所有的局部变量或函数参数都是ARE对象。这个问题的解决方法是,无论何时运行时系统检查堆栈中当前是什么,它将如何区分参考变量和简单的int?它不可以吗? 因此,必须有某种机制允许运行时建立初始活动对象列表 ..
发布时间:2018-04-19 17:48:04 其他开发