Azm*_*sov 1 c++ memory-management char
我想有一个动态字符数组,其长度等于循环迭代.
char* output;
for (short i=0; i<2; i++){
output = new char[i+1];
printf("string length: %d\n",strlen(output));
delete[] output;
}
Run Code Online (Sandbox Code Playgroud)
但是strlen返回16,我希望它是1和2.
指向的新分配的内存output未初始化:它可能包含任何内容.
strlen要求它的参数是一个指向以null结尾的字符串的指针,而output不是因为它尚未初始化.该调用strlen(output)会导致程序显示未定义的行为,因为它会读取此未初始化的内存.任何结果都是可能的.
| 归档时间: |
|
| 查看次数: |
875 次 |
| 最近记录: |