此下学习内容仅供参考学习,无详细解说,后期不断完善。敬请期待···········
C++动态内存的分配与C语言动态内存分配的区别:
- C语言的动态内存分配是函数,C++的动态内存分配是运算符。
- C语言的动态内存分配不能和C++的动态内存分配不能混合使用。
C++动态内存分配new和delete 的用法:
004--C++动态内存分配(最优) 使用动态内存分配时的注意事项:
C++动态内存分配二维指针,二维数组的使用:
动态内存分配代码学习参考:
#include"stdlib.h"
//动态内存:ma00fc calloc realloc free
//C++内存分配:new delete
#include"stdio.h"
#include<memory.h>
int main(){
int a = 4407873;
printf("%s\n",(char*)&a);
int *p =(int*)malloc(sizeof(int)* 4);//栈区数据自动释放,堆区数据手动释放
free(p);//释放的是堆区数据
p = NULL;//释放栈区数据,完全释放内存------c语言内存操作
int *p1 = new int;//分配单个内存,在堆区分配四字节
delete p1;
p1 = NULL;
int *p2 = new int(5);//分配单个内存,在堆区分配四字节,并给这个四字节赋值4
delete p2;
p2 = NULL;
int *p3 = new int[4];//分配 连续内存,在堆区分配16个字节。不能给内存字节赋值
memset(p3,0,sizeof(int)*4);//内存逐字节分配,头文件memory.h
delete[] p3;//连续释放内存。注意:[]只能写在中间
p3 = NULL;
int** p4 = new int*;
int b = 10;
*p4 = &b;
**p4 = 123;
printf("%d\n",b);
p4= NULL;
int** p5 = new int*[4];//堆区分配动态指针数组
delete[] p5;
return 0;
}