一、
void GetMemory(char *p)
{
p = (char*)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str,"Hello,World");
printf("%s",str);
}
请问运行Test有什么样的结果?
答:在函数内部修改形参并不能真正改变形参的值,执行完char *str = NULL; GetMemory(str);之后,str仍指向NULL。
二、
char* GetMemory(void)
{
char p[] = "Hello,World";
return p;
}
void Test(void)
{
char *str = NULL;
str = GetMemory();
printf("%s",str);
}
请问运行Test有什么样的结果?
答:可能是乱码。执行char p[] = "Hello,World";return p;的p[]数组是局部变量,在函数返回后,内存已经释放掉。这是程序员经常犯的错误,在于程序员不理解变量的生存周期。
三、
char* GetMemory(char **p,int num)
{
p = (char*)malloc(num);
}
void Test(void)
{
char *str = NULL;
GetMemory(&str,100);
strcpy(str,"Hello,World");
printf("%s",str);
}
请问运行Test有什么样的结果?
答:1、能够运行处Helolo,World.2、没有对malloc的内存进行释放。3、在申请内存之后没有判断申请内存是否成功。if(NULL == p)
exit(1);
分享到:
相关推荐
对c语言内存的操作,可以清晰地认识c语言条件下计算机内存的分配
关于C语言教学中内存分析的几点思考.pdf
c语言的精华部分,是学好c语言的必备资料,希望可以有所帮助
C语言中有关内存的思考题
不过,您可能没有用一些时间去思考它们在您的操作系统中是如何实现的。本节将向您展示 malloc 和 free 的一个最简化实现的代码,来帮助说明管理内存时都涉及到了哪些事情。 要试着运行这些示例,需要先复制本...
关于C/C++中的内存溢出,这些东西也是在网上百度时摘抄下来的。有时间,可以慢慢体会一下。多学多思考有好处的、、
不过,您可能没有用一些时间去思考它们在您的操作系统中是如何实现的。本节将向您展示 malloc 和 free 的一个最简化实现的代码,来帮助说明管理内存时都涉及到了哪些事情。 要试着运行这些示例,需要先 复制本代码...
基于持久化内存的索引设计重新思考与优化.docx
第3到7章是本书的主体部分,分别探讨了用数组、指针和动态内存、类、递归和代码复用来解决问题的途径和实际应用。最后,第8章从培养程序员思维的角度,进行了总结和概括,告诉读者如何才能像程序员一样思考。 《像...
常量存储区,这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改(当然,你要通过非正当手段也可以修改,而且方法很多,在《const的思考》一文中,我给出了6种方法) 明确区分堆与栈
第3到7章是书中的主体部分,分别探讨了用数组、指针和动态内存、类、递归和代码复用来解决问题的途径和实际应用。最后,第8章从培养程序员思维的角度,进行了总结和概括,告诉读者如何才能像程序员一样思考。
关于iOS内存管理的规则思考 自己生成的生成的对象,自己持有。 非自己生成的对象,自己也能持有。 不在需要自己持有的对象时释放。 非自己持有的对象无法释放。 注:这里的自己是对象使用的环境,理解为编程人员...
这篇文章采用层层递进的方式,依次会介绍关于存储的基本知识,Go内存管理的 “前辈” TCMalloc,然后是Go的内存管理和分配,最后是总结。这么做的目的是,希望各位能通过全局的认识和思考,拥有更好的编码思维和架构...
重新思考具有改进内存覆盖率的时空网络以实现高效视频对象分割_Rethinking Space-Time Networks with Improved Memory Coverage for Efficient Video Object Segmentation.pdf
windows系统下内存压力测试工具testlimit.exe
Garbage Collection技术在Java中已经比较成熟,但是在c/c++领域的发展并不顺畅,虽然很早就有人思考在C++中也加入GC的支持。现实世界就是这样的,作为一个c/c++程序员,内存泄漏是你心中永远的痛。不过好在现在有...
1.实验目的 (1) 学习Linux内存编程方法,掌握Linux内存映射和解除映射的方法 (2) 掌握在内存打开文件和读取文件的方法
考试类精品--一道面试题的思考 - 6000万数据包和300万数据包在50M内存使用环境中求交集
第3到7章是书中的主体部分,分别探讨了用数组、指针和动态内存、类、递归和代码复用来解决问题的途径和实际应用。最后,第8章从培养程序员思维的角度,进行了总结和概括,告诉读者如何才能像程序员一样思考。