64,648
社区成员
发帖
与我相关
我的任务
分享
# include <iostream>
using namespace std;
int *creat(int n);
void del(int *p);
int main()
{
int *a;
a = creat(4);
del(a); //释放动态分配的空间
for (int i = 0; i < 5; i++) //问题:释放后为什么还可以向a[i]赋值,且访问的范围可以更大??
a[i] = 1;
return 0;
}
int *creat(int n)
{
int *p = new int[n]; //动态分配大小为n * sizeof(int)的空间
for (int i = 0; i < n; i++)
cin >> p[i];
return p; //返回动态分配空间的首地址
}
void del(int *p)
{
delete []p;
p = NULL;
}
int *creat(int n);
void del(int *p);
int main()
{
int *a;
a = creat(4);
del(a); //释放动态分配的空间
for (int i = 0; i < 5; i++) //问题:释放后为什么还可以向a[i]赋值,且访问的范围可以更大??
a[i] = 1;
for (int i = 0; i < 5; i++) //我加的输出
cout<<a[i]<<endl;
system("pause");
return 0;
}
int *creat(int n)
{
int *p = new int[n]; //动态分配大小为n * sizeof(int)的空间
for (int i = 0; i < n; i++)
cin >> p[i];
/*for (int i = 0; i < n; i++) //加不加这段代码后面输出结果竟然不一样。。。。。加上会输出五个一,不加的话就不正常了
cout <<p[i]<<endl;*/
return p; //返回动态分配空间的首地址
}
void del(int *p)
{
delete []p;
p = NULL;
}