c - EXC_BAD_ACCESS : too much memory allocated?

标签 c memory-management exc-bad-access

我注意到 Xcode 中的 C 编程存在一些问题。 如果我尝试使用下面定义的维度分配这三个数组:

#define MAX_NUM_VALID 12000
#define ALT_MAX       200000

{
...
double            l_adYMLinkedData[MAX_NUM_STAR_VALID + ALT_MAX][1];
double            l_adZMLinkedData[MAX_NUM_STAR_VALID + ALT_MAX][1];
double            l_adMLinkedData[MAX_NUM_STAR_VALID + ALT_MAX][1];
...
}

Xcode 在运行时向我返回一个错误:

EXC_BAD_ACCESS (code=2, address:.....)

我不明白为什么。如果我限制这些尺寸(即 100 和 100),一切都会顺利。

有什么想法吗?

最佳答案

要尝试将大量内容放入堆栈(这往往是相对有限的资源)。

您可能想尝试进行动态分配,例如使用malloc:

double *l_adYMLinkedData = malloc ((MAX_NUM_STAR_VALID+ALT_MAX)*sizeof(double));
// check and use it
free (l_adYMLinkedData);

这实际上给了你同样的东西。指针/数组差异(例如 sizeof)存在细微差别,但如果您所做的只是索引,那么它们通常不会发挥作用。

关于c - EXC_BAD_ACCESS : too much memory allocated?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18593647/

相关文章:

c++ - 为什么我的析构函数被多次调用?

ios - 奇怪的 EXC_BAD_ACCESS 错误(我认为)

iPhone:SIGSEGV 在设备上看似随机出现(ViewDidLoad、setFont 等),从未在模拟器中出现

c++ - 尝试对结构数组使用选择排序

c++ - 如何使 cppcheck 出现错误时停止

C:将 uint8 数组转换为包含其字节的十六进制表示形式的字符串

c - 在 C 中使用宏作为函数

c - int **p 的奇怪行为?

c - 在不知道大小的情况下输入字符串

c++ - 结构的内存分配(低性能)