linux c内存分配内存,linux c动态内存分配函数malloc calloc realloc free

linux c动态内存分配函数malloc calloc realloc free

首页 计算机相关 linux c基础 linux c动态内存分配函数malloc calloc realloc free

void *malloc(size_t size)分配size个字节的内存,成功返回内存地址,失败返回NULL

void *calloc(size_t n, size_t size)分配n*size个字节内存,并把分配到的内存所有位置0,成功返回内存地址,失败返回NULL

void free(void *ptr)释放动态分配的内存

void *realloc(void *ptr, size_t size)改变 ptr 指向的内存大小realloc(NULL, size) 等同于 malloc(size)

realloc(ptr, 0) 等同于 free(ptr)

/*

如果 size > ptr的内存大小,将重新分配内存

如果 size < ptr的内存大小,则截取

*/

realloc(ptr, size)#include

#include

#include

#include

#include

#include

void main(){

char *ptr1 = malloc(10);

printf("%p\n", ptr1);

char *ptr2 = malloc(10); //为了使下面的 realloc 重新分配的内存不连续

//内存起始位置变了,老内存将被自动释放

ptr1 = realloc(ptr1, 1024);

printf("%p\n\n", ptr1);

char *ptr3 = malloc(200);

printf("%p\n", ptr3);

char *ptr4 = realloc(ptr3, 300);

printf("%p\n", ptr4);

}0xb5f010

0xb5f050

0xb5f460

0xb5f460

例子

#include

#include

#include

int main(){

char *url = (char *)malloc(30);

strcpy(url, "http://www.freecls.com");

char *name = (char *)calloc(20, sizeof(char));

strcpy(name, "沧浪水");

puts(name);

puts(url);

free(name);

free(url);

}

/*

沧浪水

http://www.freecls.com

*/

首页 计算机相关 linux c基础 linux c动态内存分配函数malloc calloc realloc free

作者邮箱: 203328517@qq.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值