用贵公司的3687开发产品有一段时间了,可是有一个简单的问题(堆和栈)没有弄明白:
开始新建工程师,一般采用的都是默认设置,只是在工程中会根据需要改变一下Section 设置,在生成向导中有Heap 和stacksize 两个选项。
请问:1. 选不选Heap 对程序会有影响吗? 我的程序并没有new,malloc 等关键字。我程序里设置#define HEAPSIZE 0x004,我试着将sbrk.c 删除掉,就会出现Undefined external symbol "_sbrk" referenced in "malloc" 错误。不知道为什么?
2. 据我了解,程序的中函数参数,临时变量等都会存放到栈(stack)中,可是我试着改变stack大小到很小,例如#pragma stacksize 0x10时候,程序仍然没有问题,运行正常,不知道是怎么回事?
.map 文件如下:
.。。。 。。。
PResetPRG
00000400 0000041b 1c 2
PIntPRG
0000041c 00000443 28 2
P
00000800 00007d0f 7510 2
C
00007d10 000083e5 6d6 2
C$DSEC
000083e6 000083eb 6 2
C$BSEC
000083ec 000083ef 4 2
D
000083f0 00008433 44 2
CDataB
0000a000 0000b757 1758 2
B
0000e800 0000ec69 46a 2
R
0000ec6a 0000ecad 44 2
S
0000ef00 0000efff 100 2
BBEXT
0000fd00 0000ff0f 210 2
C$INIT
0000ff10 0000ff11 2 2