-1 c++ dynamic-memory-allocation
我正在学习 C++ 中的动态内存分配。在运行下面的代码时,每次都会打印不同的输出。
char *const dynamic_array = new char[50];
dynamic_array[0] = '\0';
dynamic_array[0] = 'a';
cout << dynamic_array << endl;
delete[] dynamic_array;
Run Code Online (Sandbox Code Playgroud)
5 次运行的示例输出:
为什么某些运行的输出不同?
这与动态内存分配无关,而仅与遗留 C 字符串有关。AC 字符串是一个空终止字符数组。由于您未能在 之后正确写入空字符 ( '\0') 'a',因此将其用作 C 字符串是未定义的行为。