动态内存开辟

本文详细介绍了C语言中动态内存管理的几个关键函数:malloc、calloc、realloc和free。讲解了它们的功能、使用方法及常见错误,包括内存越界、多次释放和内存泄漏等问题。此外,还提到了柔性数组的概念及其优点。
摘要由CSDN通过智能技术生成

含义:根据需要分配空间,而不是一开始就固定一个空间大小

1.malloc()、calloc()、realloc()和free()

1.1 malloc()

void* malloc(size_t size)

含义:malloc()是c语言提供的一个开辟动态内存空间的函数,这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针

使用:

(1)如果开辟成功,则返回一个指向开辟好空间的指针

(2)如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查

(3)返回值的类型是void*,所以malloc函数并不知道开辟空间的类型,具体类型在使用的时候由使用者自己决定

(4)如果参数size为0,malloc的行为是标准还是未定义的,取决于编译器

(5)malloc()函数不会将其开辟的空间初始化,上面放的是随机值

#include<stdlib.h>
int main(void)
{
	int* p = malloc(10*sizeof(int));
	if (p == NULL)
	{
		printf("开辟失败");
		return;
	}
	free(p);
	p = NULL;
	return 0;
}

1.2 calloc(

void* calloc(size_t num, size_t size)

含义:calloc()是c语言提供的一个开辟动态内存空间的函数,这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针

使用:

(1)如果开辟成功,则返回一个指向开辟好空间的指针

(2)如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查

(3)num是开辟的空间个数size是开辟的空间的类型大小。如calloc(10, sizeof(int))就是开辟10个int类型的空间

(4)返回值的类型是void*,所以calloc函数并不知道开辟空间的类型,具体类型在使用的时候

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值