c++中new申请的内存空间为什么干净
时间: 2023-06-25 08:02:01 浏览: 56
在 C++ 中,`new` 运算符会在堆上动态分配内存,并返回指向分配的内存空间的指针。这个内存空间在申请时是没有被使用过的,因此它是干净的。
当我们使用 `new` 分配内存时,操作系统会向程序分配一块连续的内存区域,这个内存区域中的每一个字节都是初始化为 0 或者其他特定的值。所以我们得到的这块内存空间在分配时就已经是干净、清空的了。
需要注意的是,这里所说的干净只是指该内存区域中的值都是未知的,而不是一定是 0。在 C++ 中,未初始化的内存区域是不安全的,可能会包含任意值,因此我们需要在使用它们之前对其进行初始化。
相关问题
C++中new申请空间代码
在C++中,使用`new`操作符可以动态地分配内存空间。以下是在C++中使用`new`操作符申请空间的代码示例:
```c++
int* ptr = new int[10];
```
以上代码将申请10个整型数据类型的空间,并将指向这段空间的指针赋值给`ptr`变量。
如果需要释放这段空间,可以使用`delete`操作符:
```c++
delete[] ptr;
```
以上代码将释放`ptr`指向的空间。
需要注意的是,在使用`new`操作符申请空间时,如果分配失败会抛出`std::bad_alloc`异常,需要进行异常处理。另外,在释放空间后,需要将指针赋值为`nullptr`,以避免出现悬空指针的情况。
c++中为什么说虚函数节省空间
C++中的虚函数是实现多态的重要机制。对于一个含有虚函数的类,编译器会为其生成一个虚函数表,其中存储着该类的每一个虚函数的指针。每个对象在内存中都会存储一个指向虚函数表的指针,而不是存储每个虚函数的指针。这样做的好处是,当有多个对象同时共享一个虚函数时,它们可以共用同一个虚函数表,从而节省了内存空间。
另外,虚函数还有一个重要的作用是实现了运行时多态。这意味着,在程序运行时,可以根据对象的实际类型来动态地调用相应的虚函数,而不必等到编译时就确定好了调用哪个函数。这种动态性也符合现实中很多场景的需求,比如说一个基类指针可以指向不同的派生类对象,而且可以调用相应的虚函数,这样代码就更加灵活和可扩展。