发布网友
共2个回答
热心网友
如果是gcc/linux的可执行文件,先用readelf看:
1、$ readelf -l /bin/ls
2、...
3、 Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
4、...
5、GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x4
6、...
如果MemSiz为零,则由OS决定栈的大小。
1、$ ulimit -a | grep stack
2、stack size (kbytes, -s) 8192
可以看到OS设定的值是8MB
编译时改变stack大小的方法:
ld --stack=栈尺寸
或
gcc -Wl,--stack=栈尺寸
例如 gcc -Wl,--stack=0x4000000
热心网友
您好,如果是gcc/linux的可执行文件,先用readelf看:
1、$ readelf -l /bin/ls
2、...
3、 Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
4、...
5、GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x4
6、...
如果MemSiz为零,则由OS决定栈的大小。
1、$ ulimit -a | grep stack
2、stack size (kbytes, -s) 8192
可以看到OS设定的值是8MB
编译时改变stack大小的方法:
ld --stack=栈尺寸
或
gcc -Wl,--stack=栈尺寸
例如 gcc -Wl,--stack=0x4000000追问我是Windows