【发布时间】:2012-12-31 16:28:13
【问题描述】:
这是场景: 我声明了一个数组并且在程序中的任何地方都没有使用它。如果我声明它的长度为 100 或更少,它工作正常。对于更大的长度,它会给出分段错误。我无法理解这种行为。
ATL_RAM_BUFFER_L3 an_unknown_array[128];
其中 ATL_RAM_BUFFER_L3 是一个将近 72KB 的结构。
【问题讨论】:
-
全局声明或动态分配。您说的是超过 9MB 的静态分配,这可能超出了您的堆栈大小。
-
可能是内存空间不足以容纳 128*72 KB
-
它仍然在堆栈上分配,因此任何后续分配都将超出范围。
-
附带说明,这是什么结构,大小为 72KB。?
-
@CashifIlyas 全局声明将变量放在加载图像的 DATA 段中,并且超出了执行线程在本地调用堆栈上可以访问的有限空间。
标签: c arrays segmentation-fault structure