Questions tagged «stack»

3
堆栈分配在Linux中如何工作?
操作系统是否为堆栈或其他内容保留了固定数量的有效虚拟空间?仅使用大局部变量就能产生堆栈溢出吗? 我写了一个小C程序来测试我的假设。它在X86-64 CentOS 6.5上运行。 #include <string.h> #include <stdio.h> int main() { int n = 10240 * 1024; char a[n]; memset(a, 'x', n); printf("%x\n%x\n", &a[0], &a[n-1]); getchar(); return 0; } 运行程序可以得到&a[0] = f0ceabe0和&a[n-1] = f16eabdf proc映射显示了堆栈: 7ffff0cea000-7ffff16ec000. (10248 * 1024B) 然后我试图增加 n = 11240 * 1024 运行程序可以得到&a[0] = b6b36690和&a[n-1] = b763068f …

2
是什么设置fs:[0x28](堆栈金丝雀)?
从这篇文章中可以看出,这FS:[0x28]是一个堆栈-canary。我正在使用此功能的GCC生成相同的代码, void foo () { char a[500] = {}; printf("%s", a); } 具体来说,我正在开会。 0x000006b5 64488b042528. mov rax, qword fs:[0x28] ; [0x28:8]=0x1978 ; '(' ; "x\x19" 0x000006be 488945f8 mov qword [local_8h], rax ...stuff... 0x00000700 488b45f8 mov rax, qword [local_8h] 0x00000704 644833042528. xor rax, qword fs:[0x28] 0x0000070d 7405 je 0x714 0x0000070f e85cfeffff …
13 linux  security  gcc  stack 

1
如何监视每个进程/每个线程的内存消耗(分为堆,堆栈,数据,代码)?
在开始编写自己的代码之前,我想确定是否有GNU / Linux软件能够输出类似于QNX的软件showmem。 对于正在运行的每个进程的每个线程,我希望看到内存消耗分为以下几类: Process listing (Total, Code, Data, Heap, Stack, Other) 319488 1024000 24587 167936 24576 0 4103 devc-con-hid (thread 2) 0 0 0 0 4096 0 4103 devc-con-hid (thread 2) 0 0 0 0 20480 0 4103 devc-con-hid (thread 1) 0 102400 8192 0 0 0 4103 devc-con-hid …
11 linux  memory  stack 

2
为什么在现代Linux上,默认堆栈大小如此之大-8MB(在某些发行版中甚至为10MB)
例如,在OSX上,它甚至不到512k。 有没有建议的大小,请记住,该应用程序不使用递归并且不分配很多堆栈变量? 我知道这个问题太广泛了,它很大程度上取决于用法,但是我仍然想问,因为我想知道这背后是否存在一些隐藏的/内部的/系统的原因。 我想知道,因为我打算在我的应用程序中将堆栈大小更改为512 KiB-听起来仍然很大,但它比8MiB小得多-并会导致进程的虚拟内存显着减少,因为我有很多线程(I / O)。 我也知道这并没有真正的伤害,请在此处进行详细说明:pthreads的默认堆栈大小
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.