C语言——动态内存分配

malloc()

#include<stdlib.h>
void* malloc(size_t size);

向malloc申请的空间到的大小是以字节为单位的

返回的结果是void*,需要类型转换为自己需要的类型

(int*)malloc(n*sizeof(int))

如果申请失败则返回0,或者NULL

我们可以测试一下能向系统申请多大的空间

#include<stdio.h>
#include<stdlib.h>
int main(){
    void *p;
    int cnt  = 0;
    while(p = malloc(100*1024*1024)){ //当申请不到空间时会返回0或null
        cnt++;
    }
    printf("分配了%d00MB的空间", cnt);
    return 0;
}
PS D:\CTest> ./malloc.exe
分配了1900MB的空间

free()

出来混迟早要还的--申请过的空间最终都应该要还

只能还申请来的空间的首地址

地址变过了,直接去free是不可以的

void *p;
p = malloc(100*1024*1024)
p++;
free(p); //error,p不是申请空间的的首地址

申请了没有free-->长时间运行内存逐渐下降

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值