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分配空间将会非常实用。

     
     
  • 相关阅读:
    js 安全
    js压缩 uglify(2)
    js压缩 uglify
    抢红包算法 java
    手机调试
    Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom
    字符集编码 定长与变长
    db2 sqlcode
    2015.7.14(大盘结束红色,中色连坐4T)
    2015.7.10(全部涨停!想逢高出货,但是担心周一创新高)
  • 原文地址:https://www.cnblogs.com/anwcq/p/C_malloc.html
Copyright © 2011-2022 走看看