堆栈问题

[复制链接]
2771|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));

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

其实:堆是堆,栈是栈

两个不同的东西
无冕之王 发表于 2012-12-30 21:03 | 显示全部楼层
没报错,但你能在单片机上运行吗。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

282

主题

2404

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部