C语言之动态内存管理

  1. malloc(): 申请的内存是存放在堆上;malloc函数向系统申请size字节的内存空间
    原型: void *malloc(size_t size)
  2. free(): free函数释放p参数指向的内存空间。该内存空间必须是由malloc,calloc或realloc函数申请的。
    原型: void free(void *p);
    注意:该函数不会改变p参数的值,所以调用后它依然指向原来的地方(变为非法空间)
  3. calloc(): 函数在内存中动态地申请nmemb个长度为size的连续内存空间(即申请的总空间尺寸为nmemb * size),这些内存空间全部被初始化为0
    原型: void *calloc(size_t nmemb, size_t size);
  4. realloc(): realloc函数修改ptr指向的内存空间大小为size字节如果新分配的内存空间比原来的大,则旧内存块的数据不会发生改变;如果新的内存空间大小小于旧的内存空间,可能会导致数据丢失,慎用!该函数将移动内存空间的数据并返回新的指针
    原型: void *realloc(void *ptr, size_t size);
  5. 问题: 如果申请的内存空间没有释放那会发生什么?
    答:内存泄漏
  6. 导致内存泄漏还有一种方式:丢失内存块
    eg:
int a = 10;
int *p =(int *)malloc(sizeof(int)*100);
p = &a;
  1. 初始化内存空间
    memset(p,0,Nsizeof(int)); //指针p指向长度为Nsizeof(int)字节赋值
    memcpy(p2,p1,10);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值