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