不同平台下new跟deleete及其初始化的问题
想问高手:
我在linux下用new创建了一个数组后,再用delete释放掉,为什么还能正常访问该数组,例如:
int i;
int* p = new int[5];
for (i = 0; i < 5; i++)
{
p[i] = i;
cout << p[i] << " " << endl;
}
cout << endl;
delete []p;
for (i = 0; i < 5; i++)
{
cout << p[i] << " " << endl;
}
结果是:
0 1 2 3 4
0 1 2 3 4
但是并不能再用delete
但在windows下用VC写的结果是
0 1 2 3 4
-572662307 -572662307 -572662307 -572662307 -572662307
还有在linux下无论是用int* p = new int[5];还是int* p = new int[5]();每个元素都能被初始化为0
但在windows下这两个语句都不能初始化每个元素
这好像跟C++ Primer中说得不一样哦,是编译器的问题吗
谢谢指教