gpt4 book ai didi

objective-c - 在 iOS 应用程序中编写 C 代码时出现 EXC BAD ACCESS

转载 作者:行者123 更新时间:2023-12-02 22:29:50 25 4
gpt4 key购买 nike

我正在尝试在 ios 应用程序中使用纯 c 编程语言实现一些功能。当方阵大小为 50(w=h=50) 时,代码运行良好。如果我将矩阵的大小增加到 100,我会收到 EXC BAD ACCESS 消息。下面是我正在使用的代码:

    double solutionMatrixRed[w][h];
double solutionMatrixGreen[w][h];
double solutionMatrixBlue[w][h];
double solutionMatrixAlpha[w][h];

for(int x=0;x<w;x++)
{
for(int y=0;y<h;y++)
{

//NSLog(@"x=%d y=%d",x,y);
solutionMatrixRed[x][y] = 0;
solutionMatrixGreen[x][y] = 0;
solutionMatrixBlue[x][y] = 0;
solutionMatrixAlpha[x][y] = 0;
}
}

即使w=h=100,总大小也应该是100*100*8 Bytes,也就是80KB,这是正常的。谁能告诉我哪里出了问题?

最佳答案

您的代码在自动存储* 中分配了所有四个矩阵,这可能是有限的。对于移动设备来说,即使是 80K 的四倍也可能太多了。

如果您需要处理那么多内存,请考虑使用 malloc 从动态内存中分配它:

double (*solutionMatrixRed)[h] = malloc((sizeof *solutionMatrixRed) * w);
// allocate other matrices in the same way, then do your processing
free(solutionMatrixRed); // Do not forget to free the memory.


* 通常被称为“堆栈”,是在实现自动存储时经常使用的数据结构的名称。

关于objective-c - 在 iOS 应用程序中编写 C 代码时出现 EXC BAD ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12478716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com