注册 登录
编程论坛 C++教室

c++释放内存问题求助,

silenthan 发布于 2018-03-13 17:09, 1350 次点击
void check_leak(double *p, int num){
    p=new double[num];
}
int main(){
    double *q;
    check_leak(q,5);
    delete[] q;
    return 0;
}

我这样在函数中申请内存在函数外释放内存是正确的吗
3 回复
#2
yangfrancis2018-03-13 22:33
不行,应该void check_leak(double*&p,int num)才是你要的效果。这样写语法上允许,但是如果程序写大了容易把自己搞晕。
#3
Laity_CR2018-03-21 11:21
封装一个用来释放的内存的函数 就可以了。
void check_free(double * p)
{
    if(p!=NULL)
    {
        delete []p;
        p=NULL;
    }
}
#4
rjsp2018-03-21 16:32
你的代码等价于

int main( void )
{
    double* q;

    double* p = q;
    p = new double[5];

    delete[] q; // 此时q仍然是个不确定值,而不是p的值
}
1