malloc函数使用介绍

1、malloc介绍:

2、代码实例

#include <stdio.h>
#include <malloc.h> // 不能省 malloc 是menory allocate 的缩写 

int main(void)
{
    int i=5; //分配了4个字节 静态分配 
    int * p = (int *)malloc(4);// 分配个4个字节空间
    /*
    1.要使用malloc函数,必须添加malloc.h这个头文件
    2.malloc 函数只有一个形参,并且形参是整型
    3. 4表示请求系统为本程序分配4个字节
    4.malloc 函数只能返回第一个字节的地址 
    5.12行分配了8个字节 ,p变量静态内存占4个字节,p指向的动态内存占4个字节。
    6.p本身所占内存为静态分配的,p指向的内存是动态分配 
    */ 
    *p=5;   //*p代表的就是一个int变量,只不过*p这个类型分配方式和11行内存分配方式不同 
    //int t=sizeof(*p);
    free(p);    //    free(p)表示吧p所指向的内存给释放掉 
 //printf("HELLO\n"); //p本身所占内存为静态分配的,不能手动释放,只能在p变量所在的函数运行结束后才会被释放 
    printf("%d\n",*p);//指针变量p地址里存储的已经被释放了,打印的为垃圾值 
 //      printf("%d\n",t); //输出t=4; 
    return 0;
    
}

结果:

1991120

--------------------------------
Process exited after 0.6203 seconds with return value 0
请按任意键继续. . .
3、

#include <stdio.h>
#include <malloc.h>//动态变量 
void f(int *q)
{
    //*p=200;//error
    //q=200;
    *q=200;
    //**q=200;//error ,*q代表整型变量不能 在前面加* 
    //free(q);将q释放后将无法输出*q的值,系统会产生一个垃圾值 
}


int main(void)
{
    int t=sizeof(int);          //sizeof(int)返回值是int 所占的字节数 
    int *p = (int *)malloc(t);
                             //指针变量p表示系统分配内存单元的地址 
    *p=10;                  //*p=10;表示见整型值10装进个这个地址,故该地址的值为10,即*p是值为10; 
    
    printf("%d\n",*p);//10
    
    f(p);
    printf("%d\n",*p);//200
    return 0;
    
}

结果:

10
200

扫描二维码关注公众号,回复: 6142336 查看本文章

--------------------------------
Process exited after 0.4514 seconds with return value 0
请按任意键继续. . .
 

4、延伸:

5、form :传智播客

猜你喜欢

转载自blog.csdn.net/qq_40025335/article/details/87706473
今日推荐