存档

文章标签 ‘malloc’

malloc()和free()的相关知识

2011年4月28日  4,399 views 2 条评论

之前有一篇文章是写全局变量、静态变量、局部变量、静态局部变量以及栈和堆在内存中的存储区别的,最近我又看了一篇关于C中Malloc函数和Free函数对内存操作的,《浅谈C中的malloc和free》,通过这篇文章,我对C的内存申请以及释放有了新的、全面的认识。我想,不仅是C,C++或者C#等其他语言的内存申请释放应该也是使用相近的方法吧。下面我简单总结了一下《浅谈》的主要内容,再加上一点我自己的理解。

之前,我对malloc和free的了解,仅仅是在C中使用这两个函数来申请和释放内存,只知道怎么使用,用malloc申请一段给定大小的内存,返回一个Void* 指针,当使用完这段内存后需要手动调用free来释放这段内存。

一、malloc() 和 free() 的基本概念和用法:

 

1、函数原型及说明:

void *malloc(long NumBytes): 该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。

void free(void *FirstBytes): 该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由。

2、函数用法:

这两个函数的用法其实很简单,就是用malloc()申请内存,用完这段内存后交给free()来释放着段内存。简单例子:

#include<stdio.h>
int main()
{
	char *Ptr = NULL;
	Ptr = (char*)malloc(100 * sizeof(char)); //Malloc
	if (NULL == Ptr)
	{
		printf("malloc failed");
		return 1;
	}
	gets(Ptr);
	printf("%s",Ptr);
	//code...

	free(Ptr);//Free
	return 0;
}

阅读全文…