这是代码:
int main()
{
char str[] = {'a','b','c',' ','d','e',' ',' ','f',' ',' ',' ','g','h','i',' ',' ',' ',' ','j','k'};
cout << "Len = " << strlen(str) << endl;
char* cstr = new char[strlen(str)];
strcpy(cstr, str);
cstr[5] = '\0';
cout << "Len= " << strlen(cstr) << endl;
return 0;
}
//---------------
Result console:
Len = 21
Len= 5
Run Code Online (Sandbox Code Playgroud)
正如你所看到的那样,Len的cstr发生了变化.这意味着cstr的剩余内存区域是免费的.这样对吗?