zoukankan      html  css  js  c++  java
  • 内存分配malloc函数注意事项。

    malloc的全称是memory allocation,中文叫动态内存分配,用于向系统申请分配指定字节的内存空间


    原型:extern void *malloc(unsigned int num_bytes);

    看原型很头疼,来两个例子:

    int* p; 
    
    p = (int *) malloc (sizeof(int)*128);//分配128个整型存储单元
    double *pd=(double *) malloc (sizeof(double)*12);//分配12个double型存储单元

     通过这2个声明可以看出malloc的用法:

    又是指针。malloc函数返回值类型为void *,但void* 类型可以强制转换为任何其它类型的指针。相当于malloc可以返回任何类型的指针。

    几乎只要用到malloc的地方就要用到强制转换,因为应该没人会用一个void类型处理实际数据吧。

    几乎只要用到malloc的地方就要用到sizeof(),这个不用解释。

    即:   类型 *指针=(类型*) malloc ( sizeof(类型) );

    这个原型看起来容易多了。

    需注意的问题:

    用malloc动态申请内存块时,最好进行返回值的判断。

    分配失败返回空指针NULL。

    内存不再使用时,应使用free()函数将内存块释放。

    建议养成强制转换的习惯。

    malloc 和 new 不同:

    new 返回指定类型的指针,并且可以自动计算所需要大小。

    malloc 则必须要由我们计算字节数,并且在返回后强行转换为实际类型的指针。

    例3:

    struct stu *pb;
    pb=(struct stu *)malloc(sizeof(struct stu));

    套用上面的公式,我们可以方便的写出自己的例子,例3先定义一个结构体指针pb,再分配一个结构体大小的内存空间,并把首地址赋给pb;

    当我们使用链表时,用malloc分配空间将会非常实用。

     
     
  • 相关阅读:
    手机摇一摇代码
    ftp
    .net 设置导航的当前状态
    app 尺寸
    繁简体 互转 js
    静态页分页效果
    判断浏览器
    python列表,元组,字典和字符串之间的相互转换
    uliweb框架数据库操作
    uliweb的模版
  • 原文地址:https://www.cnblogs.com/anwcq/p/C_malloc.html
Copyright © 2011-2022 走看看