教育培训的网站建设,关键词抓取工具都有哪些,建设网站怎么克隆,广告联盟代理平台动态内存管理面试题 文章目录 动态内存管理面试题一、第一题此代码存在的问题运行结果分析原因修改 二、第二题此代码存在的问题运行结果分析原因修改 一、第一题
代码如下#xff08;示例#xff09;#xff1a;
#includestdio.h
#includestring.h
#incl…动态内存管理面试题 文章目录 动态内存管理面试题一、第一题此代码存在的问题运行结果分析原因修改 二、第二题此代码存在的问题运行结果分析原因修改 一、第一题
代码如下示例
#includestdio.h
#includestring.h
#includestdlib.hvoid GetMemory(char* p)
{p (char*)malloc(100);//申请100个字节的临时空间将起始地址放入p
}
void Test(void)
{char* str NULL;GetMemory(str);strcpy(str, hello world);printf(str);
}int main()
{Test();return 0;
}此代码存在的问题
运行结果 分析原因 修改
#includestdio.h
#includestring.h
#includestdlib.hvoid GetMemory(char** p)
{*p (char*)malloc(100);//申请100个字节的临时空间将起始地址放入p
}
void Test(void)
{char* str NULL;GetMemory(str);strcpy(str, hello world);printf(str);//释放free(str);str NULL;
}int main()
{Test();return 0;
}主要修改的地方就是将str的地址传入函数当中去修改str本身 二、第二题
代码如下示例
#includestdio.h
#includestring.h
#includestdlib.hchar* GetMemory(void)
{char p[] hello world;return p;
}
void Test(void)
{char* str NULL;str GetMemory();printf(str);
}int main()
{Test();return 0;
}此代码存在的问题
运行结果 分析原因 修改
#includestdio.h
#includestring.h
#includestdlib.hchar* GetMemory(void)
{char* p hello world;return p;
}
void Test(void)
{char* str NULL;str GetMemory();printf(str);
}int main()
{Test();return 0;
}char* p “hello world”; 将常量字符串的地址传给str即使p被销毁了那么常量字符串还在p只是一个首地址的存储不会影响最终的打印