一些经典的重点题目(动态内存管理)
发布时间
阅读量:
阅读量
题目一
void Getmemory(char* p){
p = (char*)malloc(100);
}
void Test(void){
char* str = NULL;
Getmemory(str);
strcpy(str, "hello wordl");
printf(str);
}
//运行Test会有什么结果
运行后发现程序崩溃
关于这个代码有如下几个错误
- 从内存中为程序分配一块连续的可用内存区域,并获取该区域的起始地址作为返回值;如果无法成功分配,则返回空指针;因此在调用完成后必须检查其返回值以确保操作成功。
- 程序退出该函数后,在这种情况下会自动回收变量p所占用的所有动态分配的空间;为了避免出现"动态内存泄漏"问题(memory leak),必须手动完成相关资源的回收。
- 在手动完成资源回收操作之后,在后续代码执行过程中应将其设为null(null)。
- 当参数str被传递给函数体时,在这种情况下会创建一个新的临时字符串副本,并对该副本进行处理以避免对原始输入数据产生影响。
void Getmemory(char** p){
*p = (char*)malloc(100);
if (
全部评论 (0)
还没有任何评论哟~
