VS是如何控制可使用的栈的大小的?

LL596214569 2020-05-14 04:21:18
如题;
今天写代码时遇到的栈溢出问题,查了一下VS默认可使用栈是1M,最大可扩展到 INT32;
但是想知道VS是如何控制这里的底层代码,在网上没有搜到相关的文章;
求大佬指点;
...全文
620 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
LL596214569 2020-05-14
  • 打赏
  • 举报
回复
引用 3 楼 Simple-Soft 的回复:
[quote=引用 2 楼 LL596214569的回复:][quote=引用 1 楼 Simple-Soft 的回复:] 你是要设置改变默认值吗?
不是,我知道怎么改变默认值,我是想知道我修改了堆栈大小之后是如何起效的? 我一直以为堆栈大小是操作系统控制的,但是现在发现VS可以控制栈的大小,我想知道VS是如何做到的。[/quote] 可以学习一下pe文件格式,都在里面会有描述[/quote] SizeOfStackReserve SizeOfStackCommit SizeOfHeapReserve SizeOfHeapCommit 应该是这几个定义起效,我继续学习学习,多谢指点
LL596214569 2020-05-14
  • 打赏
  • 举报
回复
引用 4 楼 qybao 的回复:
一般编译器会提供编译选项 比如gcc提供gcc -Wl,--stack,stack_size vc好像是通过修改链接pragma comment(linker, "/STACK:size")
我想知道的是 设置了STACK:size之后是如何起效的? 因为在我的认知中,栈的大小应该是由操作系统指定,大小上限与内存有关; 所以我想知道的是为什么可以通过编译器的编译选项来修改栈的大小,并且为什么栈的最大上限是INT32(VC中)?
qybao 2020-05-14
  • 打赏
  • 举报
回复
一般编译器会提供编译选项
比如gcc提供gcc -Wl,--stack,stack_size
vc好像是通过修改链接pragma comment(linker, "/STACK:size")
Simple-Soft 2020-05-14
  • 打赏
  • 举报
回复
引用 2 楼 LL596214569的回复:
[quote=引用 1 楼 Simple-Soft 的回复:] 你是要设置改变默认值吗?
不是,我知道怎么改变默认值,我是想知道我修改了堆栈大小之后是如何起效的? 我一直以为堆栈大小是操作系统控制的,但是现在发现VS可以控制栈的大小,我想知道VS是如何做到的。[/quote] 可以学习一下pe文件格式,都在里面会有描述
LL596214569 2020-05-14
  • 打赏
  • 举报
回复
引用 1 楼 Simple-Soft 的回复:
你是要设置改变默认值吗?
不是,我知道怎么改变默认值,我是想知道我修改了堆栈大小之后是如何起效的? 我一直以为堆栈大小是操作系统控制的,但是现在发现VS可以控制栈的大小,我想知道VS是如何做到的。
Simple-Soft 2020-05-14
  • 打赏
  • 举报
回复
你是要设置改变默认值吗?

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧