#include <iostream> using namespace std; void fun(double *p1, double *p2, double *s) { s= new double; *s=*p1+*(p2++); } int main( ) { double a[2]={1.1,2.2}; double b[2]={10.0,20.0},*s=a; fun(a,b,s); cout<<(*s)<<endl; return 0; }
时间: 2024-02-29 14:56:32 浏览: 59
#include <iostream> #include<iomanip> using namespace std;九九乘法表
这段代码中存在内存泄漏的问题,因为在函数fun中使用了动态内存分配,但并没有在函数结束前释放分配的内存。具体来说,fun函数中的语句s= new double;创建了一个新的double类型的变量,并将变量的地址赋给了参数s。但是在函数结束前,没有任何语句释放这个内存空间,导致内存泄漏。如果该函数被多次调用,那么每次调用都会创建一个新的内存空间,而没有任何一个函数释放这些空间,最终会导致程序的内存耗尽。
为了避免内存泄漏,可以在函数fun中加入释放内存的语句,如下所示:
void fun(double *p1, double *p2, double *s)
{
s= new double;
*s=*p1+*(p2++);
delete s; //释放内存
s = NULL; //释放后将指针置为空
}
这样就能够保证每次使用动态内存分配时都能够释放内存,避免内存泄漏的问题。
阅读全文