C++笔记-3-c与c++动态内存区别
前言
自学笔记,没有历史知识铺垫(省略百度部分)C++笔记-3-c与c++动态内存区别
一、动态内存管理
1. c动态内存
- 分配:
malloc()
- 释放:
free()
int *pi = (int *)malloc(4);
*pi = 4;
cout << *pi << endl;
free(pi);
// 防止悬空指针(防止指针滥用)
pi = NULL;
2.c++动态内存
无需指定空间大小
具备初始化的能力
- 分配:
new
/new[]
- 释放:
delete
/delete[]
单个代码示例
int *pi2 = new int;
*pi2 = 5;
cout << *pi2 << endl;
delete pi2;
pi2 = NULL;
// 初始化动态内存
int *pi3 = new int(44);
cout << *pi3 << endl;
delete pi3;
pi3 = NULL;
数组代码示例
int *pi4 = new int[3];
pi4[0] = 5;
pi4[1] = 9;
pi4[2] = 13;
cout << pi4[0] << endl;
cout << pi4[1] << endl;
cout << pi4[2] << endl;
// [] 不能丢失,否则会造成内存泄漏
delete[] pi4;
pi4 = NULL;
// 需要c++11 才支持new数组时初始化,编译指令:g++ main.cpp -std=c++11
int *pi5 = new int[3]{7, 8, 9};
cout << pi5[0] << endl;
cout << pi5[1] << endl;
cout << pi5[2] << endl;
delete[] pi5;
pi5 = NULL;
总结
C++笔记-3-c与c++动态内存区别