calloc函数的使用和对内存free的认识

Posted nowroot

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了calloc函数的使用和对内存free的认识相关的知识,希望对你有一定的参考价值。

  #include<stdlib.h> 

  void *calloc(size_t n, size_t size);

  free();

  目前的理解:  n是多少个这样的size,这样的使用类似有fread,fwrite. 这个函数把内存里面的数据清空了, free确实把本来的buf清空了,buf之后的数据是随机数据,有个问题就是free之后指针没有设置为NULL

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	// calloc   1920
	char* buf = (char*)calloc(1920,sizeof(char));
	if (buf == NULL)
	{
		printf("calloc 分配内存失败
");
		return -1;
	}
	printf("buf is %d
", buf[0]);
	printf("buf is %p
", buf);
	buf[0] = 1;
	printf("buf is %d
", buf[0]);
	free(buf);
	printf("buf is %p
",buf);
	printf("buf is %d
",buf[0]);
	buf = NULL;
	printf("buf is %p
",buf);
	while (1)
	{
		//printf("buf is %p
", buf);
	}
	return 0;
}

  技术图片

以上是关于calloc函数的使用和对内存free的认识的主要内容,如果未能解决你的问题,请参考以下文章

动态内存函数+经典笔试题@动态内存管理---malloc +free + calloc + realloc

堆的分配和释放(malloc,free,calloc,realloc)

C:malloc/calloc/realloc/alloca内存分配函数

深度解刨C语言内存管理(详)

内存动态分配之realloc(),malloc(),calloc()与new运算符

梦开始的地方—— C语言动态内存管理(malloc+calloc+realloc+free)