读书人

VS2003中C++指针有关问题

发布时间: 2012-04-25 19:32:32 作者: rapoo

VS2003中C++指针问题
#include <iostream>

void main()
{
using namespace std;
int * pt=new int[10];
pt[0]=0;
pt[1]=1;
pt[2]=2;
cout << " pt's address is " << pt <<" , pt's value is " <<*pt <<endl;
cout <<"pt[0]'s address is " << pt[0]<< " , pt[0]'s value is " << pt[0] <<endl;

//pt=pt+1;
cout << " Now \n";
//cout <<" pt's address " << pt <<" pt's values is " << *pt <<endl;
delete [] pt;
cin.get();
}
以上代码中,如果取消pt=pt+1的注释,则运行时会出错,但注释了以后运行不出错?
请教各位高手。

[解决办法]
pt是你new的指针位置,你修改了pt,然后delete自然出错
[解决办法]
我想是这样子。你最后delete[]p时,p的位置之前移动了一位。
释放时出错。可以这样:

C/C++ code
int *temp=pt;    pt=pt+1;    cout << " Now \n";    cout <<" pt's address " << pt <<" pt's values is " << *pt <<endl;    delete [] temp;    cin.get(); 

读书人网 >C++

热点推荐