【发布时间】:2012-11-18 09:19:45
【问题描述】:
当您动态分配内存时,例如malloc(1024 * sizeof(char)) 如果没有足够的可用内存来满足请求,则结果指针将设置为 NULL。
当没有足够的内存来满足char c[1024] 等静态分配时会发生什么?
【问题讨论】:
-
有什么办法可以捕捉到这个吗?
-
更准确地说,调用堆栈溢出。
-
处理它,不要在调用堆栈上分配大数组=>使用
malloc或new -
@DanielGibbs 如果您指的是嵌入式系统,那么堆栈空间可以与堆空间共享。在这种情况下,静态分配可以节省几个字节。另一方面,动态分配失败可以更优雅地处理。
-
如果是全局的,程序就无法启动。如果它是本地的,则会导致堆栈溢出。您无法处理这些错误。
标签: c memory-management static-memory-allocation