哪位c语言高手能帮我下

来源:百度知道 编辑:UC知道 时间:2024/05/31 01:14:20
│#include"stdlib.h"
│void initsl(v,m,n)
│ET
│ * v;int m,* n;
│{ v=malloc(m * sizeof(ET));
│* n=0;
│return;
│}
│这个程序错在哪里

#include"stdlib.h"

struct ET
{
int i;
};

void initsl(struct ET*& v, int m, int* n)
{
v=(struct ET*)malloc(m * sizeof(struct ET));
if(!n)
*n=0;
return;
}

int main(void)
{
struct ET* pET = 0;
int n;

initsl(pET, 1, &n);

return 0;
}

v在函数内分配了以后没有返回,这块内存就没有机会释放了,导致内存泄露

定义了main函数没有

是编译没通过吗?应该吧ET *V;int m,*n放到void initsl(v,m,n)的前面去。另外,malloc的返回结果是void型的,应该强传成ET*,改好后如下所示:
│#include"stdlib.h"
│ET * v;int m,* n;
│void initsl(v,m,n)
│{ v=(ET*)malloc(m * sizeof(ET));
│* n=0;
│return;
│}