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