我用函数返回一个动态分配的指针值,我应该在哪里释放呢,怎么释放呢

屁屁屁喏漕 2018-03-23 10:35:45
我用函数返回一个new动态分配的指针值,我应该在哪里释放呢,怎么释放呢
在主函数中delete返回的指针,但是程序运行出错,请问我应该怎么解决呢?
#include<iostream>
using namespace std;
//函数:IntToString(n)
//原型:char *IntToString(const int n);
//使用形式:char *p=IntToString(n);
//参数说明:参数为int类型整数,返回值为char型指针
//实现效果:实现使用动态数组将一个整数转换成一个字符串,返回字符串
char *IntToString(const int n)
{
int case1=1; //倍数
int i; //计数器
for(i=1;n/case1!=0;i++)
case1*=10; //计算位数
char *ptr;
char *p=new char[i+1]; //多一个字符存放'\0'
ptr=p; //保存动态数组指针位置
for(int j=0;j<i;j++){ //将数字转换为字符串
*p=n/case1%10+'0';
p++;
case1/=10;
}
*p='\0'; //结尾补'\0'
while(*ptr=='0') //忽略进制带来的前导0
ptr++;
return ptr;
//主要问题是:动态分配的空间在哪里释放
}
int main()
{
char *p=IntToString(123482);
cout<<p<<endl;
delete p;
return 0;
}

希望大神能帮我看一下,代码可能有点繁琐,新手入门,嘿嘿
...全文
418 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
永远的追梦人 2018-03-23
  • 打赏
  • 举报
回复
你返回的指针并不是申请内存返回的指针,delete就会出错,删除前导0改变了指针值

64,648

社区成员

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

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