欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

动态内存管理笔试试题 - 3. 第三题

最编程 2024-10-07 15:53:54
...
void GetMemory(char** p, int num)
{
	*p = (char*)malloc(num);
}
void Test(void)
{
	char* str = NULL;
	GetMemory(&str, 100);
	strcpy(str, "hello");
	printf(str);
}

请问运⾏Test 函数会有什么样的结果?

这个代码有点像第一题的优化方案,但是有没有什么问题呢?

其实这个代码已经很完善了,但是没有free,所以我们应该这样改:

void GetMemory(char** p, int num)
{
	*p = (char*)malloc(num);
}
void Test(void)
{
	char* str = NULL;
	GetMemory(&str, 100);
	strcpy(str, "hello");
	printf(str);
	free(str);
	str = NULL;
}

所以各位在申请空间后一定要记得归还,不然可能会出问题;

推荐阅读