free/delete真的把动态内存的释放完了吗?
#include <iostream>
#include <malloc.h>
using namespace std;
main()
{
int arraysize; //元素个数
int *array; //用于动态开辟数组的指针变量
cin>>arraysize;
array=(int*)malloc(arraysize * sizeof(int));//利用malloc在堆内存中开辟内存空间,它的大小是元素的个数乘以该数据类型的长度
for(int i=0;i<arraysize;i++)
{
array[i]=i;
}
for(int i=0;i<arraysize;i++)
{
cout<<array[i]<<",";
}
cout<<endl;
free(array);//利用free释放动态开辟的堆内存空间
for(int i=0;i<arraysize;i++)
{
cout<<array[i]<<",";
}
cout<<endl;
cin.get();
cin.get();
}
如果输入数组长度为5 free前输出结果为0,1,2,3,4 free后输出为 5252072(不确定的数),5246776(不确定的数),2,3,4 为什么动态内存free后仍可以访问第二个以后的数据?free是不是只释放了前两个数据?