为什么print new []给我一个c ++地址

Ame*_*hac -2 c++ memory int

我已经知道使用方括号[]将取消引用指针.因此,当new int给出一个地址时,如果这段代码没有给你存储在该地址的值作为括号deference那个内存空间:

cout << new int[3];
Run Code Online (Sandbox Code Playgroud)

R S*_*ahu 7

我已经知道使用方括号[]将取消引用指针

像C++中的许多其他东西一样,[]在不同的上下文中使用具有不同的含义.

在上下文中new int[3],它不会取消引用指针.它为3 ints 的数组分配内存并返回指向该内存的指针.

这条线

cout << new int[3];
Run Code Online (Sandbox Code Playgroud)

相当于

int* ptr = new int[3];
cout << ptr;
Run Code Online (Sandbox Code Playgroud)

如果要打印其中一个值,请使用:

int* ptr = new int[3];
cout << ptr[0];
Run Code Online (Sandbox Code Playgroud)

你可以使用:

cout << (new int[3])[0];
Run Code Online (Sandbox Code Playgroud)

但是你的程序会有内存泄漏.

  • 不要忘记'删除[]后指针! (3认同)