NO.36 ----C语言中动态内存管理相关函数的使用

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>

// 动态内存相关

int main()
{	

// 内存扩容使用realloc,函数原型:void* relloc(void* ptr,size_t size);——>ptr是要调整的内存地址,size为调整之后的新size

int* p1 = malloc(1024);
if (p != NULL)
{
	// 使用内存
}
else
{
	exit(EXIT_FAILURE);
}

// 假设内存不足,此时需要扩容
int* p2 = NULL;
p2 = realloc(p1, 1024);

if (p2 != NULL)
{
	p1 = p2;
}
// 内存使用
free(p1);


//// 另外一个动态内存开辟函数,calloc,函数原型: void* calloc(size_t,size_t size)

//int* p = calloc(10, sizeof(int));
//if (p != NULL)
//{
//	// 使用空间
//	
//}

//free(p);    // 用完之后一定要记得释放!!!
//p = NULL;




//// 内存开辟 使用malloc函数,函数原型:void* malloc(size_t size);
//int num = 0;
//scanf("%d", &num);
//
//int* p = NULL;
//p = (int*)malloc(num*sizeof(int));
//if (p != NULL)			// 判断指针p是否为空
//{
//	int i = 0;
//	for (i = 0; i < num; i++)
//	{
//		*(p + i) = 0;	// 将每个开辟的空间初始化为0
//	}
//}

//// 开辟完成后一定要记得释放,否则会导致内存泄漏,这对于服务器程序来说很严重
//// 内存释放函数:free 函数原型: void free(void*ptr);
//free(p);
//p = NULL;


system("pause");
return 0;
}

说明:
1、malloc函数向内存申请的是一块连续的空间,用完后需要及时使用free函数进行内存释放,否则会导致内存泄露;开辟成功,返回一个指向开辟好空间的指针,开辟失败,返回一个NULL指针,故开辟玩之后需要先判断是否开辟成功,然后再进行使用。

猜你喜欢

转载自blog.csdn.net/weixin_42237990/article/details/88250275