C++ 中给定的两行动态内存分配有什么区别?他们都创建 10 个大小的数组吗?
What is the difference between given two lines of dynamic memory allocation in C++ ? Do they both create 10 sized array?
int *arr = new int(10);
int *arr = new int[10];
是c++动态内存分配的代码。
但是我不明白这两者有什么区别。
int *arr = new int(10);
为单个整数分配堆内存,初始化为 10。
int *arr = new int[10];
为 10 个整数的数组分配堆内存,其中 none 被初始化为任何特定值。
记住:( )
和{ }
主要用于声明中的initialization。而 [ ]
主要是一个索引运算符。因此,在第一条语句中,您试图分配一个 int
内存,并将 10
作为初始值。在第二条语句中,您试图分配一个没有默认初始化的 10 int
块数组。
举个简单的例子,说说栈上发生的事情
int x(10)
这通常意味着将值分配给名为 x
.
的 int
int x[10]
这通常意味着创建一个名为 x
的包含 10 个元素的数组。
所以,当谈到动态内存时,也是一样的。
int* x=new int(10)
这将在堆上创建一个整数并为其分配值 10。
int* x=new int[10]
这将在堆上创建一个包含 10 个整数的数组。
int *arr = new int(10);
int *arr = new int[10];
是c++动态内存分配的代码。 但是我不明白这两者有什么区别。
int *arr = new int(10);
为单个整数分配堆内存,初始化为 10。
int *arr = new int[10];
为 10 个整数的数组分配堆内存,其中 none 被初始化为任何特定值。
记住:( )
和{ }
主要用于声明中的initialization。而 [ ]
主要是一个索引运算符。因此,在第一条语句中,您试图分配一个 int
内存,并将 10
作为初始值。在第二条语句中,您试图分配一个没有默认初始化的 10 int
块数组。
举个简单的例子,说说栈上发生的事情
int x(10)
这通常意味着将值分配给名为 x
.
int
int x[10]
这通常意味着创建一个名为 x
的包含 10 个元素的数组。
所以,当谈到动态内存时,也是一样的。
int* x=new int(10)
这将在堆上创建一个整数并为其分配值 10。
int* x=new int[10]
这将在堆上创建一个包含 10 个整数的数组。