【C 语言进阶(12)】动态内存管理笔试题

文章目录

  • 题目 1
  • 题目 2
  • 题目 3
  • 题目 4

题目 1

  • 运行 Test 函数后的结果是什么?
void GetMemory(char* p)
{
	p = (char*)malloc(100);
}

void Test(void)
{
	char* str = NULL;
	GetMemory(str);
	strcpy(str, "hello world");
	printf(str);
}

代码结果

  • 程序崩溃。

代码分析

【C 语言进阶(12)】动态内存管理笔试题_第1张图片

题目 2

  • 为什么运行 Test 函数后的结果是这样?

【C 语言进阶(12)】动态内存管理笔试题_第2张图片

代码分析

【C 语言进阶(12)】动态内存管理笔试题_第3张图片

题目 3

【C 语言进阶(12)】动态内存管理笔试题_第4张图片

代码分析

  • malloc 开辟的空间用完之后未释放。

题目 4

【C 语言进阶(12)】动态内存管理笔试题_第5张图片

  • 运行 Test 之后虽然能够正常的打印出 world,但是代码依然存在问题。

代码分析

【C 语言进阶(12)】动态内存管理笔试题_第6张图片

你可能感兴趣的:(#,C语言进阶篇,c语言,开发语言)