C++内存分配初探
C++在内存分配方面采用了两种机制,一种是C语言之前的形式的malloc/free,另一种是C++自己的new/delete。
一、malloc/free:
1、malloc函数
原型:
void *malloc(size_t size );
这个函数只有一个参数,该参数是我们制定需要申请能的内存空间的大小。申请成功返回指针,申请失败,返回null。格式:
void *p = malloc(seize);
2、free函数
原型:void free(void *memblock);
这个函数同样只有一个参数,该参数是malloc申请的对应的指针,在释放内存时,一定要先对内存是否为空就行判断。
格式:free p;
二、new/delete:
1、new函数
原型:void *operator new[](
std::size_t _Count)throw(std::bad_alloc);void *operator new[](std::size_t _Count,const std::nothrow_t&) throw( );void *operator new[](std::size_t _Count,void* _Ptr) throw( );
格式:char *pchr = new char; //申请单个内存空间char *pstr = new char(size); //申请多个内存空间2、delete:
原型:void operator delete( void* _Ptr ) throw( ); void operator delete( void *, void * ) throw( ); void operator delete( void* _Ptr, const std::nothrow_t& ) throw( );格式:delete pchr; //释放单个内存空间
原型:void operator delete[]( void* _Ptr ) throw( ); void operator delete[]( void *, void * ) throw( ); void operator delete[]( void* _Ptr, const std::nothrow_t& ) throw( );
格式:
delete [ ]pstr; //释放多个内存空间三、总结
C++动态内存申请成功之后,未初始化之前,在内存中的结构均以FDFDFDFD ......n*CD......FDFDFDFD的形式表示。在C++内存动态申请中,malloc/free与new/delete,必须成对存在且要一一对应。