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 字符串是未定义的行为。


以上是C++动态内存分配奇怪的输出的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>