C++中的new和delete,C中的free、malloc、calloc、realloc、_alloca
2016-10-31 13:15
483 查看
C++
new:
int* p = new int; // *p = ?(未初始化,debug模式下*p = 0xCCCCCCCC)
int* p = new int(); // *p = 0
int* p = new int(a); // *p =a(a是某integer)
int* p = new int
; // 动态数组中各元素 = ?(未初始化)
int* p = new int
(); // 动态数组中各元素 = 0
int* p = new int
(a); //编译不通过
delete:
delete基础类型时,可以不用delete[],但delete类时要用delete[],因为delete[]会调用动态数组中储存的所有对象的析构函数
delete NULL不会有问题。使用多态时,delete基类指针时除非析构函数是虚函数,否则只会调用基类的析构函数,因此析构函数最好用虚函数。
C
free:释放动态数组,free(NULL)不会有问题
malloc:不初始化元素
calloc:初始化所有元素为0
realloc:改变动态数组大小(新的size要大于原来的size)
_alloca:在栈上而非堆上申请内存
new:
int* p = new int; // *p = ?(未初始化,debug模式下*p = 0xCCCCCCCC)
int* p = new int(); // *p = 0
int* p = new int(a); // *p =a(a是某integer)
int* p = new int
; // 动态数组中各元素 = ?(未初始化)
int* p = new int
(); // 动态数组中各元素 = 0
int* p = new int
(a); //编译不通过
delete:
delete基础类型时,可以不用delete[],但delete类时要用delete[],因为delete[]会调用动态数组中储存的所有对象的析构函数
delete NULL不会有问题。使用多态时,delete基类指针时除非析构函数是虚函数,否则只会调用基类的析构函数,因此析构函数最好用虚函数。
C
free:释放动态数组,free(NULL)不会有问题
malloc:不初始化元素
calloc:初始化所有元素为0
realloc:改变动态数组大小(新的size要大于原来的size)
_alloca:在栈上而非堆上申请内存
相关文章推荐
- C/C++ 内存分配:malloc/calloc/realloc/free和new/delete
- C/C++ 内存分配:malloc/calloc/realloc/free和new/delete
- new/delete/malloc/calloc/realloc/free
- malloc/calloc/realloc/free与new/delete的对比
- 关于malloc、free、new、delete以及calloc、realloc基本库函数与运载符的含义
- 学习之第一周小结 malloc、calloc、realloc、free、new、delete函数应用
- (转):alloca/malloc/calloc/realloc/sbrk/new/delete
- C++动态内存管理,malloc,calloc,realloc和new,delete的讲解
- alloca/malloc/calloc/realloc/sbrk/new/delete
- _alloca/malloc/calloc/realloc/sbrk/new/delete
- C/C++ 内存分配方式,堆区,栈区,new/delete/malloc/free
- calloc(), malloc(), realloc(), free(),alloca()区别
- C/C++内存分配方式,栈区堆区 new/delete/malloc/free
- C++ 内存管理之四(new/delete vs malloc/free)
- C++ Memory Management : What is the difference between malloc/free and new/delete?
- [ZZ]calloc(), malloc(), realloc(), free(),alloca()
- C/C++ 内存分配方式,堆区,栈区,new/delete/malloc/free
- C/C++ 内存分配方式,堆区,栈区,new/delete/malloc/free(转)
- C++中new&delete与malloc&free比较
- C/C++ 内存分配方式,堆区,栈区,new/delete/malloc/free