C++动态数组大小调整问题

Pet*_*ter 3 c++ arrays dynamic

基本的伪代码如下所示:

void myFunction()
{

int size = 10;

int * MyArray;

MyArray = new int[size];

cout << size << endl;

cout << sizeof(MyArray) << endl;

}
Run Code Online (Sandbox Code Playgroud)

第一个cout按预期返回10,而第二个cout返回4.

有人有解释吗?

Jam*_*lis 8

MyArray 只是一个指针,在您的系统上,其大小为四个字节.

动态创建阵列时,需要自己跟踪大小.

如果您创建了自动数组或静态数组,

int MyArray[10];
Run Code Online (Sandbox Code Playgroud)

然后sizeof(MyArray)将是40.一旦数组衰减到指针,例如,当您将其传递给函数时,大小信息将丢失.