我用函数返回一个动态分配的指针值,我应该在哪里释放呢,怎么释放呢
屁屁屁喏漕 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;
}
希望大神能帮我看一下,代码可能有点繁琐,新手入门,嘿嘿