打印

堆栈问题

[复制链接]
2100|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dfsa|  楼主 | 2012-12-30 20:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
看了一下启动代码里设置的堆栈大小,如下:
Stack_Size      EQU     0x00000400
Heap_Size       EQU     0x00000200
也就是说栈的空间是1024字节,堆的空间是512字节。
为什么我在一个子函数中分配的字符串数组大小已经超过了而没有报错呢?
char *Token1=(char *)malloc(513*sizeof(char));
char *Token2=(char *)malloc(1025*sizeof(char));

相关帖子

沙发
秋天落叶| | 2012-12-30 20:29 | 只看该作者
char *Token1=(char *)malloc(513*sizeof(char));
char *Token2=(char *)malloc(1025*sizeof(char));
这两条语句malloc分配的内存应该不是在栈上的。而只是指针变量Toekn1  跟Token2 才分配在栈空间。

使用特权

评论回复
板凳
pkat| | 2012-12-30 20:44 | 只看该作者
编译通过不等于运行正确

使用特权

评论回复
地板
sinadz| | 2012-12-30 20:56 | 只看该作者
char *Token1=(char *)malloc(513*sizeof(char));
char *Token2=(char *)malloc(1025*sizeof(char));

这个不是在栈里面分配的吧?

其实:堆是堆,栈是栈

两个不同的东西

使用特权

评论回复
5
无冕之王| | 2012-12-30 21:03 | 只看该作者
没报错,但你能在单片机上运行吗。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

282

主题

2404

帖子

2

粉丝