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();