- C中开辟空间:
malloc()方法,realloc()方法
void *malloc( size_t size );
//提供需要开辟的空间大小,返回空间位置void*指针
void *realloc( void *memblock, size_t size );
//提供原空间内存地址,需要的新空间大小,返回新空间位置void*指针
释放空间:
free()方法
void free( void *memblock );
//释放一整块内存空间
- C++中开辟空间:
new标识符使用:
int* a = new int(3);
//开辟一个整型空间,并初始化为3
int* arr = new int[10];
//开辟一个整型数组空间,长度为10
释放空间:
delete标识符
delete a;
//释放一块变量空间
delete[] arr;
//释放一块数组空间
- 其区别体现在以下方面
- malloc/realloc是一个函数,new是一个标识符/关键字
- malloc不能在开辟时初始化,new可以
- malloc开辟失败返回NULL,new失败抛出异常
- malloc不能开辟常量内存块,new可以
- malloc可以指定大小开辟空间,new只能开辟指定数据类型大小空间
- malloc返回void*,new返回void
- malloc无法重载,new可以
- new底层是使用malloc实现的
本文详细介绍了C语言中malloc、realloc和free函数以及C++中的new和delete操作符用于内存管理的方式。C语言的内存分配函数不支持初始化,而C++的new可以;malloc失败返回NULL,new抛出异常;malloc不能开辟常量内存,new可以。此外,new还可以重载,且其底层可能使用malloc实现。
2859

被折叠的 条评论
为什么被折叠?



