"new int(100)"做什么?
What does "new int(100)" do?
可能的重复项:
这是一个变量还是函数
我错误地使用了以下内容:
int *arr = new int(100);
它通过了编译,但我知道这是错误的。它应该是
int *arr = new int[100];
当我写错了编译器时,编译器认为是什么?
第一行分配单个int
并将其初始化为 100
。将int(100)
视为构造函数调用。
由于这是标量分配,因此尝试访问arr[1]
或使用delete[]
释放内存将导致未定义的行为。
维基百科新(C++)引用:
int *p_scalar = new int(5); //allocates an integer, set to 5. (same syntax as constructors)
int *p_array = new int[5]; //allocates an array of 5 adjacent integers. (undefined values)
更新
在当前的维基百科条目new
和delete
(C++)中,该示例被删除。
此外,这是不太直观但完全可靠的C++参考,用于new
和new[]
。
它分配一个类型为 int
的对象并将其初始化为值 100
。
很多人不知道你可以将初始值设定项传递给new
,有一个特定的成语应该更广泛地了解以避免使用memset
:
new int[100]();
这将分配一个int
数组并对其元素进行零初始化。
此外,您不应该使用数组版本的 new
。曾。为此,有std::vector
。
第一个创建一个新整数,将其初始化为值 100 并返回指向它的指针。
在 C/C++ 中,指向数组的指针和指向单个值的指针之间没有区别(指向数组的指针实际上只是指向其第一个元素的指针)。因此,这是创建具有一个元素的数组的有效方法。
相关文章:
- 如果我在 c++ 中以 new 的放置形式使用没有足够的内存,会发生什么情况?
- int** a = new int*[n]();这个函数有什么作用?
- "new int * **[10]"做什么?
- 有些时候,阶级必须"default copy c'tor" ?当我做"new Type[..]"时会发生什么?
- 对于没有功能的结构,"new (ptr) mystruct;"做什么?
- 使用泛型成员变量"placement new"结构/类数组的正确方法是什么?
- new和::new有什么区别
- 带"new"的指针和带"&variable"的指针有什么区别
- "a = new arr ***[num];"的含义是什么?
- 将内存分配给 2D 数组时,“new int*[rowCount];”的含义是什么?是 2D 数组,是指向数组的指针数组
- C++用法:" *(new int); "做什么?
- new _Elem[_Size]() 与 new _Elem[_Size]{} 有什么区别?
- int '*p = new int (5);' 和 'int *p = new int[5];' 有什么区别?
- (类 *对象;)和(object = new class();)之间有什么区别
- 除了使用 new 之外,什么会导致内存泄漏?(C++)
- "{}" "new int[5]{};"的目的是什么?
- 新的int()和new int []有什么区别
- "new Classname*[]"是什么意思?
- "new int(100)"做什么?
- 在混合 C/C++ 程序中协调 malloc 和 new 的"正确"方法是什么?