我注意到 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/