【发布时间】:2017-12-09 14:08:08
【问题描述】:
显然我对此有误解,但我试图简单地将特定数字设置为动态内存数组。
#include <iostream>
#include <cstdlib>
using namespace std;
int main () {
int *arr = new int [4][5]
{{3, 6, 9, 23, 16},
{24, 12, 9, 13, 5},
{37, 19, 43, 17, 11},
{71, 32, 8, 4, 7}};
cout<< arr [1][3]<< endl<< endl;
int *x = new int;
*x = arr [2][1];
cout<< x<< endl;
cout<< *x<< endl << endl;
delete x;
*x = arr [0][3];
cout<< x<< endl;
cout<< *x<< endl;
delete x;
delete [] arr;
return;
}
【问题讨论】:
-
显然,我什至不知道如何正确发布代码。
-
你想用这段代码做什么?您正在使用
new,这使一切变得非常复杂。你delete内存然后访问它,然后delete再次访问它。很破。然后你写了return;,它不应该编译,因为你需要return和int,或者完全忽略return。 -
欢迎来到 Stack Overflow。请阅读What topics can I ask about here?和How do I ask a good question?
-
@user9076567 正如@klutt 所说。尤其是您应该在帖子中提出实际问题的部分。
-
第一个
delete x显然是错误的。在delete之后仍然使用x。x也被删除两次,即 UB(未定义行为)。此外,您不需要在这个简单的程序中进行动态分配。