示例4.3 用函数返回值来传递动态内存
用函数返回值来传递动态内存这种方法虽然好用,但是常常有人把return语句用错了。这里强调不要用return语句返回指向“栈内存”的指针,因为该内存在函数结束时自动消亡,见示例4.4。
char *GetString(void)
{
char p[] = "hello world";
return p; // 编译器将提出警告
}
void Test4(void)
{
char *str = NULL;
str = GetString(); // str 的内容是垃圾
cout<< str << endl;
}
示例4.4 return语句返回指向“栈内存”的指针
用调试器逐步跟踪Test4,发现执行str = GetString语句后str不再是NULL指针,但是str的内容不是“hello world”而是垃圾。
如果把示例4.4改写成示例4.5,会怎么样?
char *GetString2(void)
{
char *p = "hello world";
return p;
}
void Test5(void)
{
char *str = NULL;
str = GetString2();
cout<< str << endl;
}
示例4.5 return语句返回常量字符串
函数Test5运行虽然不会出错,但是函数GetString2的设计概念却是错误的。因为GetString2内的“hello world”是常量字符串,位于静态存储区,它在程序生命期内恒定不变。无论什么时候调用GetString2,它返回的始终是同一个“只读”的内存块。
分享到:
相关推荐
《股权代持问题及解决方式》 ...理解并妥善处理股权代持问题,是企业稳健经营的重要环节。对于涉及股权代持的企业和个人来说,充分了解相关法律法规,制定严谨的协议,并在必要时寻求专业法律咨询,至关重要。
本文将详细探讨“昂达H110刷8代9代u软件及教程”这一主题,帮助用户理解如何通过这个过程升级他们的主板以支持新一代的Intel处理器。 标题中的“昂达H110刷8代9代u”指的是使用特定的软件工具对昂达H110主板的BIOS...
这份操作说明旨在帮助上市公司理解并掌握股息申报的具体流程,以确保税务合规,避免因信息收集不全而引发的潜在问题。 首先,我们需要进行的是**单位信息设置**。在个人所得税代扣代缴系统中,第一步是登录并进入...
2. **HTTP协议理解**:理解HTTP协议的请求和响应格式至关重要。HTTP请求由请求行(包含方法、URL和协议版本)、请求头部和请求体组成;响应则包括状态行、响应头部和响应体。Java的`java.io.BufferedReader`和`java....
2. ** Region划分**:通过Region划分,使得GC可以更灵活地进行局部或全局的垃圾回收。 3. **暂停预测**:G1能够预测每次GC的停顿时间,从而让开发者可以设定一个期望的停顿目标。 4. **空间整合**:G1在回收垃圾时...
本文将深入探讨“旅行者2代800480PC主程序”,这款专为车载电脑和笔记本设计的导航软件,旨在帮助用户理解其功能特性,以及如何有效利用这一工具提升出行体验。 “旅行者2代800480PC主程序”是一款高度定制化的导航...
Java是世界上最流行的编程语言之一,尤其在企业级应用开发中占据主导地位。...在阅读"java六大必须理解的问题-来自网络少许有误.txt"文档时,应注意其中的错误并结合其他权威资料进行校对,以获取最准确的知识。
首先,我们要理解什么是IP代理服务器。IP代理服务器是一种网络服务,它作为用户和互联网之间的中介,通过代理服务器提供的IP地址进行网络访问。这样做的好处在于可以隐藏用户的原始IP地址,提高匿名性,同时也可以...
- **代数方法**:通过设立方程,代入数据求解未知数,是解决数学问题的常用手段。 - **模型构建**:将实际问题抽象为数学模型,如直线、二次函数等,便于求解。 6. **总结升华**: - 深度理解题目要求,灵活运用...
2. **指导临床试验设计**:知道药物的药代动力学特性可以帮助设计更合理的临床试验方案。 3. **预测药物行为**:线性药代动力学特性使得可以根据已知数据预测未知剂量下的药物行为。 #### 五、面临的挑战 1. **...
在电力系统分析中,潮流计算是一项基础且重要的任务,它用于确定电力网络中各节点电压、功率分布等电气参数。...通过实践这一过程,我们可以深入理解电力网络的运行特性,掌握解决复杂电力系统问题的工具和技术。
《XXXX年债权人代位权制度的理解与适用》 债权人代位权制度,是现代法律体系中为保护债权人权益,防止债务人逃避债务而设立的重要法律工具。这一制度源自早期的司法实践,具体体现在《关于适用民事诉讼法若干问题的...
在Java世界中,面向切面编程...理解并掌握这两种代理方式,对于深入理解和有效利用Spring AOP至关重要。在实际开发中,根据业务需求和性能考虑,选择合适的动态代理方式,可以有效地提高代码的可维护性和扩展性。
0-1背包问题是一种经典的组合优化问题,在计算机科学和运筹学中有着广泛的...通过学习和理解这个案例,你可以掌握如何应用遗传算法来解决实际的多目标优化问题,这对于优化问题的求解和算法设计具有很高的实践价值。
股权代持涉及到法律风险、税务问题、权益保障等多个方面,对于企业和个人投资者来说,理解其核心概念、法律关系以及解决方式至关重要。 股权代持,又称委托持股或隐名投资,是指实际出资人(隐名股东)不直接登记为...
2. **锁状态检查**:检查锁的当前状态,包括剩余使用次数、有效期限等。 3. **故障排查**:诊断锁的问题,如检测锁是否损坏或存在软件冲突。 4. **软件绑定**:将特定的软件许可证绑定到特定的硬件锁上,确保软件...
将100个数分成50组,计算每个组的两个数代入表达式后的和的最大值,这涉及到组合优化和求和问题,需要考虑如何最大化绝对差的和。 9. 取整函数的性质与应用 [x]、(x)和分别代表下取整、上取整和最接近x的整数,这些...
【360随身WiFi2代 for Mac驱动程序】是一款专为苹果Mac OS X系统设计的驱动软件,它使得用户可以在Mac电脑上顺利使用360随身WiFi2代产品。这款驱动主要针对的是采用mt7601芯片的360随身WiFi设备,确保在操作系统版本...
本压缩包文件“潮流计算辐射网_matlab_电力系统_潮流计算_前推回代_pretty2gp_”提供了基于MATLAB实现的电力系统潮流计算方法,特别是针对辐射型电网的前推回代算法。 首先,我们来详细了解前推回代法。这是一种...