C++:new和delete的用法

简介: C++:new和delete的用法

地址分类:

  • 栈区:函数的形参,非静态的局部变量
  • 堆区:用于程序运行时动态内存分配

C++中利用new操作符在堆区开辟数据

堆区开辟的数据,由程序员手动开辟,手动释放,释放利用操作符delete

利用new创建的数据,会返回该数据对应的类型的指针


  1. new的用法
int* p=new int(10);


基本语法

int* fun()
{
    int* a = new int(10);
    return a;
}
int main()
{
    int* p = fun();
    cout << *p << endl;
    delete p;
    return 0;
}
  1. 在堆区利用new开辟数组
void test()
{
    //创建10整形数据的数组在堆区
    int* arr = new int[10];  //10代表数组有10个元素
    for (int i = 0; i < 10; i++)
    {
        arr[i] = i + 10;    //给十个元素赋值10~19
    }
    for (int i = 0; i < 10; i++)
    {
        cout << arr[i] << endl;
    }
    //释放堆区数组
    delete[] arr;  //释放数组的时候,要加[]才可以
}
int main()
{
    test();
    return 0;
}
  1. delete

delete运算符使用的一般格式为

delete []指针变量


例如要撤销上面用new开辟的空间用

delete p;


上面我们用“new int[10];”开辟的数组空间,把new返回的指针赋给了指针变量arr,则应该用以下形式的delete运算符撤销该空间:

delete[] arr;  //释放数组的时候,要加[]才可以
目录
相关文章
|
1月前
|
C++
【C++】深入解析C/C++内存管理:new与delete的使用及原理(二)
【C++】深入解析C/C++内存管理:new与delete的使用及原理
|
1月前
|
编译器 C++ 开发者
【C++】深入解析C/C++内存管理:new与delete的使用及原理(三)
【C++】深入解析C/C++内存管理:new与delete的使用及原理
|
1月前
|
存储 C语言 C++
【C++】深入解析C/C++内存管理:new与delete的使用及原理(一)
【C++】深入解析C/C++内存管理:new与delete的使用及原理
|
1月前
|
程序员 C语言 C++
C++入门5——C/C++动态内存管理(new与delete)
C++入门5——C/C++动态内存管理(new与delete)
57 1
|
2月前
|
C++
C++(十九)new/delete 重载
本文介绍了C++中`operator new/delete`重载的使用方法,并通过示例代码展示了如何自定义内存分配与释放的行为。重载`new`和`delete`可以实现内存的精细控制,而`new[]`和`delete[]`则用于处理数组的内存管理。不当使用可能导致内存泄漏或错误释放。
|
3月前
|
编译器 C++ 容器
【C++】String常见函数用法
【C++】String常见函数用法
|
3月前
|
存储 程序员 编译器
c++学习笔记08 内存分区、new和delete的用法
C++内存管理的学习笔记08,介绍了内存分区的概念,包括代码区、全局区、堆区和栈区,以及如何在堆区使用`new`和`delete`进行内存分配和释放。
45 0
|
21天前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
21 4
|
21天前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
19 4
|
21天前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
17 1