#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;//释放堆空间

}

函数域中申请堆空间出函数后不会自动释放相关推荐

  1. java中的堆空间增加_Java堆内存的10个要点

    当我开始学习Java编程时,我不知道什么是堆内存或堆空间,我甚至不知道当对象创建时,它们被放在了哪里.当我开始正式写一些程序后,我会经常遇到java.lang.outOfMemoryError的报错, ...

  2. 解决IDEA中导入新的maven依赖后Language Level自动重置问题

    解决IDEA中导入新的maven依赖后Language Level自动重置问题 参考文章: (1)解决IDEA中导入新的maven依赖后Language Level自动重置问题 (2)https:// ...

  3. [iOS] tableView中实现底部button出现时tableView的bottom自动向上偏移

    这是我在工程中遇到的一个需求:选择照片之后,按bottomButton进行发送. 具体场景:照片存放在tableviewcontroller中,当选择照片之后,自动弹出bottomButton,点击之 ...

  4. idea 模块jdk依赖总是自动变_解决IDEA中导入新的maven依赖后Language Level自动重置问题...

    问题: 弄了个测试项目,因为有涉及JDK1.8的代码,所以将IDEA中默认的Language Level 5(即对应JDK1.5),修改为了8(即对应JDK1.8),但是每次引入新的maven依赖,自 ...

  5. 完成一个简单的儿时游戏-剪子包袱锤。提示玩家出拳,玩家出拳后,电脑自动出拳,根据双方的出拳,来判定输赢。

  6. c++中在堆和栈中申请空间的差别

    堆中和栈中申请的空间的比较, 我找到了下面的比较: 栈的情况: 栈上分配空间的好处是快,而且对象生存期是自动的,离开当前域之后就自动析构回收. 坏处就是栈空间有限,而且不能人为控制对象的生存期, 比如 ...

  7. C语言动态申请内存空间之malloc(),calloc(),realloc()函数

    在C语言中用于动态申请内存空间的函数主要为malloc()函数,calloc()函数,以及realloc()函数,以下主要介绍三个函数的用法,区别以及使用时的注意事项. malloc(),calloc ...

  8. strtok字符串拆分和堆空间的申请

    strtok字符串拆分 //头文件 #include <stdio.h> #include <stdlib.h> #include <string.h> //主函数 ...

  9. C++堆空间和栈空间的区别

    [转载]http://www.cppblog.com/oosky/archive/2006/01/21/2958.html 非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥! 一直对堆栈空 ...

最新文章

  1. python怎样定义一个数组_Python创建数组
  2. centos7 xfce 中文字体输入法
  3. HZOJ Drink
  4. 安装JDK 1.7时could not locate a suitable jar utility解决方案
  5. 基础算法之快速排序Quick Sort
  6. 《大数据分析原理与实践》一一第3章 关联分析模型
  7. 优化 Hive ETL 任务(参数篇)
  8. JSP程序开发学习笔记2
  9. 贺利坚老师汇编课程30笔记:将数据、代码、栈放入不同段
  10. 记住看小电影前一定要检查一下域名是不是 HTTPS 的,不然……
  11. pytorch的dataset用法详解
  12. 2010QQ游戏登录器(分析+感叹)
  13. 网络工程师笔记--广域网和接入网
  14. 不要再「外包」AI 模型了!最新研究发现:有些破坏机器学习模型安全的「后门」无法被检测到...
  15. 总结iPhone、iPad各机型对应的iOS 系统版本(最全)
  16. 视频监控系统 摄像头与网络存储服务器兼容,网络视频监控系统技术要点
  17. Django Web 官方 中文文档 开发手册
  18. GAL汉化界的一点实话。。。。。
  19. vs开发revit2016_2016年重要的软件开发发展
  20. MOELLER M30C-FDRL-W-X1按钮和指示灯

热门文章

  1. acdream 1023 xor按位思考
  2. 用Ant编译Flex项目的几点注意事项
  3. @ViewChild 的三种常用方法
  4. 浅谈PHP面向对象编程(九)
  5. JS如何监听动画结束
  6. 028 -bash-4.1$ 出现故障的原理及解决办法?
  7. 【PHP】详解 $_SERVER 函数中QUERY_STRING和REQUEST_URI、SCRIPT_NAME、PHP_SELF区别
  8. Bootstrap学习笔记(四)-----Bootstrap每天必学之表单
  9. python+pycharm+Django报错
  10. Makefile学习(二)[第二版]