据说每个过程都有8 mb的堆栈.该堆栈将用于存储局部变量.所以如果我的数组大小超过堆栈,它必须溢出?
int main()
{
int arr[88388608];
int arr1[88388608];
int arr2[88388608];
while(1);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但我无法得到结果!
#include <stdio.h>
int main(void)
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
何时以及如何为上述程序创建进程控制块?
例如,在上述程序进入运行状态之前,内核必须为此进程分配一块pcb。
我在哪里可以找到对内核进行的各种启动系统调用,以便我可以将这些调用跟踪到内核中。
我在上面的程序上运行了一个 strace,但我无法得到它。
execve("./a.out", ["./a.out"], [/* 42 vars */]) = 0
brk(0) = 0x9aaf000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb78df000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=112037, ...}) = 0
mmap2(NULL, 112037, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb78c3000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such …Run Code Online (Sandbox Code Playgroud)