Yuv*_*har 1 c++ new-operator dynamic-memory-allocation
int *arr = new int(10);
int *arr = new int[10];
Run Code Online (Sandbox Code Playgroud)
是c++中动态内存分配的代码。但我不明白这两者之间有什么区别。
int *arr = new int(10); 为单个整数分配堆内存,初始化为 10。
int *arr = new int[10]; 为包含 10 个整数的数组分配堆内存,其中没有一个被初始化为任何特定值。
举个简单的例子,让我们来谈谈堆栈上发生了什么。
int x(10)
这通常意味着为int命名的x.
int x[10]
这通常意味着创建一个名为x10 个元素的数组。
因此,当涉及到动态内存时,情况是一样的。
int* x=new int(10)
这会在堆上创建一个整数并将其赋值为 10。
int* x=new int[10]
这会在堆上创建一个包含 10 个整数的数组。