如何解决内存的动态分配问题。请大虾指教!!谢谢!!

lyb_201 2008-02-13 04:11:58
#include <iostream>
using namespace std;
char *GetMemory(int num)///动态分配内存函数
{
char *p=new char[num];
return p;

}
/////////////////////////////
void main(void)
{
char *T=new char[10];
T=GetMemory(10);
strcpy(T,"This is Test!");
cout<<T<<endl;
delete []T;////运行时出错
T=NULL;
}

1、请问如何将函数GetMemory中创建的内存释放了。
2、在main函数中delete []T为什么出错?
请各位高手指教!!!
...全文
181 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hslinux 2008-02-15
  • 打赏
  • 举报
回复
4楼的只要你保证GetMemory(n)的n比strcpy中拷贝的长度大就是正确的了。
nsdcomputer 2008-02-14
  • 打赏
  • 举报
回复
到main函数的结束, 你只释放了用函数GetMemory 得到的内存, 而在main函数中用new获得的内存却没有被释放, 并且也没法释放了!
michney 2008-02-13
  • 打赏
  • 举报
回复
1楼正解
第一次在外面分配的内存泄漏
按照编码规范,你既然在函数里面分配内存,
也应该提供函数来释放
最好不要里面分配,外面释放
michney 2008-02-13
  • 打赏
  • 举报
回复
内存泄漏+数组越界
visame 2008-02-13
  • 打赏
  • 举报
回复
delete []T;////运行时出错 //运行出错是因为上面strcpy内存越界了

oo ,学习了哦!
zhaokugua 2008-02-13
  • 打赏
  • 举报
回复
你new了10个字符,你数数"This is Test!"多少个字符,哈哈,霸占良田,触犯法律!
lyb_201 2008-02-13
  • 打赏
  • 举报
回复
应该不会出什么问题。。
1、但程序运行的效率会降低。。
2、你新建的内存空间,如何使用。
con_con 2008-02-13
  • 打赏
  • 举报
回复
搭车问下, return new char[num]; 会不会出问题
lyb_201 2008-02-13
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
char *GetMemory(int num)
{

char *p=new char[num];

return p;

}
/////////////////////////////
void main(void)
{
char *T=NULL;

T=GetMemory(13);
strcpy(T,"This is Test!");
cout<<T<<endl;
delete []T;
T=NULL;
}
是这样吗???
有没有什么问题?
tangshuiling 2008-02-13
  • 打赏
  • 举报
回复
T=GetMemory(13);
strcpy(T,"This is Test!");
delete []T;
T=NULL;
lyb_201 2008-02-13
  • 打赏
  • 举报
回复
哈哈不好意识!!!
问题居然出在strcpy(T,"This is Test!")~~~
那如何将上面的GetMemory中的内存释放呢??
谢谢!!!
oo 2008-02-13
  • 打赏
  • 举报
回复
void   main(void) 
{
char *T=new char[10]; //既然GetMemory会申请内存,这里就不需要申请内存了
T=GetMemory(10);
strcpy(T,"This is Test!"); //你这个串太长了,超过了10个字节,会把别的内存改写掉
cout < <T < <endl;
delete []T;////运行时出错 //运行出错是因为上面strcpy内存越界了
T=NULL;
}

64,684

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧