|
1.
malloc:动态开辟指定大小的空间,返回值是void* ,所以要自己指定返回的数据类型
int *ptr = (int*) malloc (10*sizeof(int));
calloc:动态开辟指定大小的空间,与malloc不同的是它会进行初始化
int* ptr = (int*)calloc(10,sizeof(int));
realloc: 为动态开辟的空间调整大小,如果原空间后有足够大的空间,之间在后面开辟。如果原空间后的空间不够大,它会开辟一块空间,将原来的数据拷贝过来,并释放原来的空间
int *ptr = (int*) malloc (10*sizeof(int));
realloc(ptr,100*sizeof(int));
free:动态开辟的空间一定要记得释放,否则可能导致内存泄漏(指针丢了,内存还在)
动态开辟的内存都在堆上,堆上的空间由程序员手动开辟,手动释放。
2.c++的动态内存管理:
c++通过new/delete动态管理内存
new/delete动态管理对象
new[]/delete[]动态管理对象数组
new做了俩件事:
调用operator new分配空间
调用了构造函数初始化对象
delete做了俩件事
调用析构函数权力对象
调用operator delete释放空间
new[N]
调用operator new分配空间
调用N次构造函数分别初始化每个对象
delete[N]
调用N次析构函数清理对象
调用operator delete释放空间 |
上一篇: 渣渣菜鸟求助下一篇: 有没有会app通迅协议,想写个pc爆粉
|