函数域中申请堆空间出函数后不会自动释放
#include<iostream>
using std::cout;
using std::endl;
char *scat(char *s1,char *s2)
{
char *s=new char[strlen(s1)+strlen(s2)+1];
strcpy(s,s1);
strcat(s,s2);
return s;//返回刚申请的堆空间的首址,出了函数后变量s就不复存在了,但申请的空间仍在
//这很危险,容易造成内存泄露,因为有的人认为在函数中为局部变量申请的堆空间,出了函数后
//会自动释放,这是不正确的
}
void main()
{
char str1[]="hello";
char str2[]="Jim";
char *str3=scat(str1,str2);
cout<<str3<<endl;
str3[0]='x';
cout<<str3<<endl;
delete [] str3;//释放堆空间
}
结果:helloJim
xelloJim
地址返回可以为int类型
#include<iostream>
using std::cout;
using std::endl;
int scat(char *s1,char *s2)
{
char *s=NULL;
s=new char[strlen(s1)+strlen(s2)+1];
strcpy(s,s1);
strcat(s,s2);
return (int )s;//返回刚申请的堆空间的首址,出了函数后变量s就不复存在了,但申请的空间仍在
//这很危险,容易造成内存泄露,因为有的人认为在函数中为局部变量申请的堆空间,出了函数后
//会自动释放,这是不正确的
}
void main()
{
char str1[]="hello";
char str2[]="Jim";
char *str3=(char *)scat(str1,str2);
cout<<str3<<endl;
str3[0]='x';
cout<<str3<<endl;
delete [] str3;//释放堆空间
}
结果:helloJim
xelloJim
3、
#include<iostream>
using std::cout;
using std::endl;
int scat(char **s1,char **s2)
{
char *s=NULL;
s=new char[strlen(*s1)+strlen(*s2)+1];
strcpy(s,*s1);
strcat(s,*s2);
return (int )s;
}
void main()
{
char *str1="hello";
char *str2="Jim";
char *a="x";
char *str3=(char *)scat(&str1,&str2);
cout<<str3<<endl;
str3[0]='x';
cout<<str3<<endl;
delete [] str3;//释放堆空间
}
函数域中申请堆空间出函数后不会自动释放相关推荐
- java中的堆空间增加_Java堆内存的10个要点
当我开始学习Java编程时,我不知道什么是堆内存或堆空间,我甚至不知道当对象创建时,它们被放在了哪里.当我开始正式写一些程序后,我会经常遇到java.lang.outOfMemoryError的报错, ...
- 解决IDEA中导入新的maven依赖后Language Level自动重置问题
解决IDEA中导入新的maven依赖后Language Level自动重置问题 参考文章: (1)解决IDEA中导入新的maven依赖后Language Level自动重置问题 (2)https:// ...
- [iOS] tableView中实现底部button出现时tableView的bottom自动向上偏移
这是我在工程中遇到的一个需求:选择照片之后,按bottomButton进行发送. 具体场景:照片存放在tableviewcontroller中,当选择照片之后,自动弹出bottomButton,点击之 ...
- idea 模块jdk依赖总是自动变_解决IDEA中导入新的maven依赖后Language Level自动重置问题...
问题: 弄了个测试项目,因为有涉及JDK1.8的代码,所以将IDEA中默认的Language Level 5(即对应JDK1.5),修改为了8(即对应JDK1.8),但是每次引入新的maven依赖,自 ...
- 完成一个简单的儿时游戏-剪子包袱锤。提示玩家出拳,玩家出拳后,电脑自动出拳,根据双方的出拳,来判定输赢。
- c++中在堆和栈中申请空间的差别
堆中和栈中申请的空间的比较, 我找到了下面的比较: 栈的情况: 栈上分配空间的好处是快,而且对象生存期是自动的,离开当前域之后就自动析构回收. 坏处就是栈空间有限,而且不能人为控制对象的生存期, 比如 ...
- C语言动态申请内存空间之malloc(),calloc(),realloc()函数
在C语言中用于动态申请内存空间的函数主要为malloc()函数,calloc()函数,以及realloc()函数,以下主要介绍三个函数的用法,区别以及使用时的注意事项. malloc(),calloc ...
- strtok字符串拆分和堆空间的申请
strtok字符串拆分 //头文件 #include <stdio.h> #include <stdlib.h> #include <string.h> //主函数 ...
- C++堆空间和栈空间的区别
[转载]http://www.cppblog.com/oosky/archive/2006/01/21/2958.html 非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥! 一直对堆栈空 ...
最新文章
- python怎样定义一个数组_Python创建数组
- centos7 xfce 中文字体输入法
- HZOJ Drink
- 安装JDK 1.7时could not locate a suitable jar utility解决方案
- 基础算法之快速排序Quick Sort
- 《大数据分析原理与实践》一一第3章 关联分析模型
- 优化 Hive ETL 任务(参数篇)
- JSP程序开发学习笔记2
- 贺利坚老师汇编课程30笔记:将数据、代码、栈放入不同段
- 记住看小电影前一定要检查一下域名是不是 HTTPS 的,不然……
- pytorch的dataset用法详解
- 2010QQ游戏登录器(分析+感叹)
- 网络工程师笔记--广域网和接入网
- 不要再「外包」AI 模型了!最新研究发现:有些破坏机器学习模型安全的「后门」无法被检测到...
- 总结iPhone、iPad各机型对应的iOS 系统版本(最全)
- 视频监控系统 摄像头与网络存储服务器兼容,网络视频监控系统技术要点
- Django Web 官方 中文文档 开发手册
- GAL汉化界的一点实话。。。。。
- vs开发revit2016_2016年重要的软件开发发展
- MOELLER M30C-FDRL-W-X1按钮和指示灯
热门文章
- acdream 1023 xor按位思考
- 用Ant编译Flex项目的几点注意事项
- @ViewChild 的三种常用方法
- 浅谈PHP面向对象编程(九)
- JS如何监听动画结束
- 028 -bash-4.1$ 出现故障的原理及解决办法?
- 【PHP】详解 $_SERVER 函数中QUERY_STRING和REQUEST_URI、SCRIPT_NAME、PHP_SELF区别
- Bootstrap学习笔记(四)-----Bootstrap每天必学之表单
- python+pycharm+Django报错
- Makefile学习(二)[第二版]