我想要一个长度等于循环迭代的动态字符数组。
char* output;
for (short i=0; i<2; i++){
output = new char[i+1];
printf("string length: %d\n",strlen(output));
delete[] output;
}
但是 strlen
返回 16,我希望它是 1 和 2。
最佳答案
output
指向的新分配内存未初始化:它可能有任何内容。
strlen
要求它的参数是一个指向空终止字符串的指针,output
不是,因为它还没有被初始化。调用 strlen(output)
会导致您的程序表现出未定义的行为,因为它读取了这个未初始化的内存。任何结果都是可能的。
关于c++ - 动态字符数组没有给出正确的字符串长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11942565/