【问题标题】:Debugging Dynamically Allocated 2D Array with Xcode 5使用 Xcode 5 调试动态分配的二维数组
【发布时间】:2013-11-18 15:33:05
【问题描述】:

我有以下 C 代码创建一个动态分配的二维数组。

numbersArray = (int **)malloc(sizeof(int *)* primeNumber);

for (i =0 ; i < primeNumber; i++)
    numbersArray[i] = (int *)malloc(sizeof(int)*2);

numbersArray 是全局定义的,而 primeNumber 只是我在程序执行期间计算的一​​个数字。

我的程序运行良好,没有问题。我可以对阵列进行各种处理。它工作得很好。

我的问题是Xcode 5 在调试时没有显示numbersArray 的内容。它只显示以下内容:

为什么它不能正确显示动态分配的数组,我可以看到数组中的每个单元格?

我在发布之前检查了类似的问题,他们谈到了编译器直到运行时才知道数组大小的动态分配,但我想我记得之前(在以前版本的 Xcode 中)我能够查看动态分配数组的内容。

这里到底发生了什么?一直都是这样,还是 Xcode 5 的东西,或者我有配置 Xcode?​​p>

【问题讨论】:

    标签: c arrays debugging xcode5


    【解决方案1】:

    首先,please don't cast the return value of malloc() in C

    现在,我想你记错了。除非它在进行非常高级的分析,否则调试器应该无法知道 int ** 变量应该被解释为特定大小的数组。

    您通常可以做的是使用各种“view memory as ...”类型的命令来检查内存。这将更加复杂,因为您的数组是“锯齿状的”,即每一行都是指向该行数据的指针,而不是整个数组是单个连续分配。

    【讨论】:

    • OP 也可以检查 malloc 的返回值。
    • 是的,我想我记错了。谢谢你的提示。您还可以分享一些命令来检查内存。比如如何检查双数组?
    猜你喜欢
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 2010-10-03
    • 2021-02-03
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多