c++ - 内存分配错误,可能在 GDB 中

标签 c++ xcode memory-management

我在测试一个相当大的程序时开始在 Xcode 4.6.3 中遇到 BAD_ACCESS 错误。我将错误追踪到以下几点:

int main(int argc, const char * argv[])
{
    float test1[1024][1536];
    float test2[340][1536];
    std::cout << "Made it up to this point!\n";

    return 0;
}

如上程序将运行良好。但是,如果我将数组大小增加到 [340][1536] 以上,它将崩溃并显示

EXC_BAD_ACCESS(code=2, address=0x7fff00000de4)

显然,调试器无法为程序分配足够的内存。关于如何解决问题的任何想法?

编辑:我还发现我在静态分配上遇到错误,例如

float a[123][456]

一天前工作正常。所以,这可能是一个编译器选项。

最佳答案

因为 main 不能被多次调用,所以通过将这些数组设为静态,您不会丢失任何东西

int main(int argc, const char * argv[])
{
    static float test1[1024][1536];
    static float test2[340][1536];
    std::cout << "Made it up to this point!\n";

    return 0;
}

关于c++ - 内存分配错误,可能在 GDB 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18457182/

相关文章:

c++ - CGAL - 在多面体中找到点

c++ - 重载运算符时出错 *

ios - Xcode 9 : how to install ios 10 sdk

xcode - 使用 Swift 将 UI 图像转至 ViewController

ios - 使用同一对象 NSNotificationCenter 释放调用两次

c# - C# 中的内存压力测试

c++ - 了解 char 指针数组的大小

xcode - 如何更改 NSTableHeaderView 的背景颜色而不隐藏列标题?

c - Linux 上使用的 malloc 版本

c++ - 在 C++ 中明确禁止堆分配