malloc函数

1.函数功能

Malloc 向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针

 2.函数原型

 extern void *malloc(unsigned int num_bytes);

3.返回值

如果分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。函数返回的指针一定要适当对齐,使其可以用于任何数据对象

4.与new的区别

(1)malloc 函数返回的是 void * 类型。

(2)函数的实参为 sizeof(int) ,用于指明一个整型数据需要的大小

 

      int* p = (int *) malloc (1);

 

代码也能通过编译,但事实上只分配了1个字节大小的内存空间,当你往里头存入一个整数,就会有3个字节无家可归,而直接“住进邻居家”!造成的结果是后面的内存中原有数据内容被改写。

 

在Linux中可以有这样:malloc(0),这是因为Linux中malloc有一个下限值16Bytes,注意malloc(-1)是禁止的;但是在某些系统中是不允许malloc(0)的。在规范的程序中我们有必要按照这样的格式去使用malloc及free:

 

type *p;
if (NULL == (p = (type *)malloc(sizeof (type)))) 

 

 

 

posted on 2013-09-27 17:15  尸香魔芋2013  阅读(223)  评论(0编辑  收藏  举报