c动态内存管理拾遗

c语言核心技术,这本书非常好!以下是书中整理,也留给自己日后翻看。

malloc(),calloc() :分配新的内存区域。

void *malloc(size_t size) :分配连续内存区域,大小不小于size字节,但新分配内存区域的内容未确定。

void *calloc(size_t count, size_t size) : 分配不少于count*size大小的内存区域,而且将内存中每个字节都初始化为0.

返回值为分配内存区域第一个字节的地址。分配的内存区会一直存在,除非调用free()或realloc()释放内存。

void *realloc(void *ptr, size_t size) :调整以前分配的内存区域。释放ptr所指区域,并分配一个size字节内存区域,返回首地址,并将旧内存区内容复制到新的内存区中。若分配失败,它不会改变原内存区域。

void free(void *ptr) :释放以前分配区域。

范例:

char *getline(unsigned int len_max)
{
	char *linPtr = malloc( len_max + 1);
	if (linPtr != NULL)
	{
		int c = EOF;
		unsigned int i = 0;
		while ( i < len_max && ((c = getchar()) != '\n' && c != EOF))
			linPtr[i++] = (char)c;
		linPtr[i] != '\0';
		if (c == EOF && i == 0)
		{
			free(linPtr);
			linPtr = NULL;
		}
		else
			linPtr = realloc(linPtr, i + 1);
	}
	return linPtr;
}

转载于:https://www.cnblogs.com/seebro/archive/2012/07/18/2598118.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值