gpt4 book ai didi

Android NDK-BUILD 程序在静态数组分配时崩溃

转载 作者:太空狗 更新时间:2023-10-29 16:21:23 24 4
gpt4 key购买 nike

我是 android 编程的新手。我有一个使用 NDK-Build 构建的 native C 应用程序。我正在其中一个线程中进行静态分配。

整数 X[64][4096];//<-- 正好需要 1 MB 空间。

当我使用 adb shell 运行它时,出现“段错误”。如果我将数组缩减为 X[63][4096],它似乎运行良好。现在我知道在 Android 中有一个 16MB 或类似的限制用于 VM,但是这个程序几乎没有分配占用 2MB 的 RAM(并且设置 ->应用程序显示我还有另外 650 MB 的备用内存)。

知道是什么导致了这次崩溃吗?以及如何解决?

问候

最佳答案

您所做的分配实际上不是静态的。如果 X 是函数内部的局部变量,每次进入函数时,它将在堆栈(通常比堆小得多)上动态分配,并在函数返回时释放。

如果您真的想让 X 成为静态的(即 X 应该有一个副本在线程函数的所有实例之间共享),您可以声明变量 静态
如果你想让每个线程都有自己的 X 副本,你应该使用 malloc()/new [] 在堆上明确分配空间,并使用 free()/delete [] 释放它

关于Android NDK-BUILD 程序在静态数组分配时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13920588/

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