VC如何看一个函数占用堆栈大小(明天中午就给分)

enchanter1982 2005-05-28 08:22:27
我现在调的程序有时会导致VC无法正常工作,
看了看代码感觉是不是自己写的函数申请的临时变量太多的问题导致堆栈溢出
我的程序是在RTOS上运行
在VC用只是用来测试用
所以希望用VC如何看一个函数占用堆栈大小
...全文
728 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
leechiyang 2005-05-29
  • 打赏
  • 举报
回复
不好意思,刚才写的有误。
先定义个char begin;
//---定义其他变量。
最后定一个char end;
int tmp = &end - &begin;
粗略计算一下栈大小。
leechiyang 2005-05-29
  • 打赏
  • 举报
回复
先定义个char begin;
//---定义其他变量。
最后定一个int char;
int tmp = &end - &begin;
粗略计算一下栈大小。
qrlvls 2005-05-28
  • 打赏
  • 举报
回复
如果是RTOS的话可能会有些不同,编译器的不同会导致堆栈的使用方式不同
不过太多的局部变量确实会造成堆栈溢出,开源的RTOS一般都可以自己设定堆栈大小
如果系统不同,你应该用你实际的工具去解决问题会好一些
zengwujun 2005-05-28
  • 打赏
  • 举报
回复
堆栈溢出是指内存操作越界吧,与函数占用堆栈没太大关系
  • 打赏
  • 举报
回复 1
打开程序调试,打开调试工具条上的汇编窗口,可看到程序的汇编代码,当函数调用的时候用F11跟进函数内部,可看到函数的汇编代码,通常开始部分是这样的(__stdcall):
push ebp
mov ebp,esp
sub esp,40h

那个40h就是所用来分配局部变量的栈大小,注意是16进制
oyljerry 2005-05-28
  • 打赏
  • 举报
回复
函数参数等就是压栈,出栈
rabo 2005-05-28
  • 打赏
  • 举报
回复
那不是堆栈,那是栈,一个函数入栈是按照你的形参来分配大小的。溢出只可能是你自己的数组开小了等原因。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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