命令“ new”和“ malloc”未正确分配内存

时间:2018-07-12 11:21:57

标签: c++ c

下面是我的简单代码,它取自数十个SO问题,论坛等。对于C的malloc执行相同的操作,结果完全相同。如图所示,仅将我的指针(用作数组)创建为ptr [0]。有什么想法吗?

#include <iostream>

int main(){

    int x = 5;
    double* ptr = new double[x];
    // At this point the debugger displays the pointer as pointing at a single
    // double, not five doubles.
    delete[] ptr;

    return 0;
}

顺便说一句,不幸的是,我需要使用数组。我正在调用需要C的API(目前)。谢谢您的帮助。

使用错误的动态分配调试上述代码

Debugging of aforementioned code with wrong dynamic allocation

1 个答案:

答案 0 :(得分:5)

代码中的malloc或new没有问题。已为ptr分配了足以存储5个double值的内存。您应该尝试在数组中添加值并尝试获取它们。调试时看到的是调试器显示指针的方式。如果要查看调试器中的所有元素,则应创建一个数组而不是指针,例如 double arr [5]

#include <iostream>

using namespace std;

int main(){

int x = 5;
double* ptr = new double[x];

ptr[0] = 1.1;
ptr[1] = 1.2;
ptr[2] = 1.3;
ptr[3] = 1.4;
ptr[4] = 1.5;

for (int i = 0; i < x; i++)
    cout << ptr[i] << endl;

delete[] ptr;


return 0;
}