温州网站开发app制作,企业网址查询,邯郸做网站网络公司,百度优化推广一、C内存管理方式简介
C语言中的内存管理方式在C中可以继续使用#xff0c;但是在有些地方就无能为力#xff0c;而且使用起来比较麻烦。因此C中引入了自己的内存管理方式#xff0c;通过new和delete操作符进行动态内存管理。
二、new语法
new可以申请1个或多个空间内存管理方式简介
C语言中的内存管理方式在C中可以继续使用但是在有些地方就无能为力而且使用起来比较麻烦。因此C中引入了自己的内存管理方式通过new和delete操作符进行动态内存管理。
二、new语法
new可以申请1个或多个空间且可以为这些空间初始化未初始化的空间默认为0
int* ptr1 new int;//申请一个int大小空间默认初始化为0
int* ptr2 new int[10];//申请10个int大小空间默认初始化为0int* ptr3 new int(1);//申请一个int大小空间初始化为1
int* ptr4 new int[10] {1, 2, 3, 4, 5};//申请10个int大小空间前5个空间初始化为1,2,3,4,5后5个默认初始化为0
new申请空间无需手动检查是否失败因为new申请空间失败后会抛异常
void func()
{int n 1;while (1){int* ptr new int[1024 * 1024 * 100];cout n - ptr endl;n;}
}int main()
{func();//捕获异常try{func();}catch (const exception e){cout e.what() endl;}return 0;
}
三、delete语法
delete在释放空间时对于一次申请多个空间的需要带上[ ]
delete ptr1;
delete[] ptr2;
delete ptr3;
delete[] ptr4;
四、链表结点实例代码
new自定义类型空间时编译器会自动调用该自定义类型的构造函数
struct ListNode {struct ListNode* _next;int _val;//构造函数ListNode(int val):_next(nullptr),_val(val){}
};
//构建链表
ListNode* CreateList(int n)
{ListNode head(-1);//哨兵位ListNode* tail head;int val;cout 请依次输入 n 个结点值 endl;for (size_t i 0; i n; i){cin val;tail-_next new ListNode(val);tail tail-_next;}return head._next;
}