#include <iostream>
using namespace std;
int len=25;
int main(int argc, char* argv[])
{
char *str1=new char[len];
int i=0;
for (i=0;i<len-1;i++)
{
str1[i]='1';
}
str1[i]='\0';
cout<<str1<<endl;
char *str=str1+20;
// delete []str;
str1[10]='\0';
cout<<str1<<endl;
cout<<str<<endl;
cout<<&str<<endl;
//释放str1所指向的值。
delete []str1;
str1=NULL;
// cout<<str1<<endl;
//str所指向的地址未改变
cout<<&str<<endl;
//从输出可知str所指向的地址亦被释放。即字符串被截断,其指针释放时不会造成内存泄露。
cout<<str<<endl;
return 0;
}
想到这点主要还是基础不够扎实~~如果对C++理解够深刻的话就不会存在这种疑问!