在树莓派用calloc创建动态内存时程序崩溃
一开始考虑的是动态内存开辟空间过大,后来翻heap大小定义时发现:
#define RT_HW_HEAP_BEGIN (void*)&__bss_end
#define RT_HW_HEAP_END (void*)(RT_HW_HEAP_BEGIN + 64 * 1024 * 1024)
heap大小定义为64M空间,远大于程序calloc的空间。
于是我又尝试用malloc先申请动态内存空间,然后从头开始初始化,代码如下:
char *p = rt_malloc(60000 * 28 * 28);
rt_kprintf("rt_malloc done\n");
rt_thread_mdelay(500);
int cnt = 0;
for (int i = 0; i < 60000 * 28 * 28; ++i) {
p[i] = (char)i;
if (cnt++ > 1000) {
rt_kprintf("%d\n", i);
cnt = 0;
}
}
首先申请约47M的空间,然后进行初始化,大约初始化11M空间后程序崩溃。

有大神知道这个问题怎么解决吗?求教
谢谢解答!!