下面是我的简单代码,它取自数十个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(目前)。谢谢您的帮助。
使用错误的动态分配调试上述代码
答案 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;
}