做为参数传递出去前应该赋值buf* mybuf=NULL;
解决方案 »
- 关于VC6.0资源视图的问题
- 我画圆之后再画直线。就成这样子了。。而且单独画圆时只能画一个。画第二个第一个就消失。希望给详细代码。求解!!
- vc做出的程序换了机器打不开,求助
- csdn的类容在firefox下经常不能回复。。我晕!!!!
- 求MSChart控件的资料
- 救命呀,请教高手:为什么我的debug版本编译通过,但Release版本界面上,按钮乱摆放了
- CSDN帖阅读不方便,我做了个软件,方便读帖!
- 定义数组的最好方法是什么?条件如下
- 给天下和我一样的菜鸟们的礼物~~~~
- 关于splash screen 的一个小问题
- 请问,在看《Visual C++ 技术内幕》之前该看什么书?非常感谢!!!
- 我以控件源码相送,但捆绑问题和高分,有意者请进!
void initbuf(buf** pbuf)
{
*pbuf=malloc(sizeof(buf));
*pbuf->p=NULL;
*pbuf->i=0
}试一下
int i;}void initbuf(buf** pbuf)
{
*pbuf=malloc(sizeof(buf));
*pbuf->p=NULL;
*pbuf->i=0
}main()
{
buf* mybuf;
initbuf(&mybuf);
...
}好了
呵呵,为什么要buf** pbuf?各位大侠解释一下
或者写成
struct buf{ char* p;
int i;}buf* initbuf()
{
pbuf=malloc(sizeof(buf));
pbuf->p=NULL;
pbuf->i=0
}main()
{
buf* mybuf;
mybuf=initbuf();//warning
...
}
或者写成
struct buf{ char* p;
int i;}buf* initbuf()
{
pbuf=malloc(sizeof(buf));
pbuf->p=NULL;
pbuf->i=0
}main()
{
buf* mybuf;
mybuf=initbuf();//warning
...
}
或者写成
struct buf{ char* p;
int i;}buf* initbuf()
{
pbuf=malloc(sizeof(buf));
pbuf->p=NULL;
pbuf->i=0
}main()
{
buf* mybuf;
mybuf=initbuf();//warning
...
}
struct buf{ char* p;
int i;}void initbuf(buf* pbuf)
{
pbuf=malloc(sizeof(buf));
pbuf->p=NULL;
pbuf->i=0
}main()
{
buf mybuf; //一定要定义成指针么?上面的说的都是对的。这样也没错
initbuf(&mybuf);//warning
...
}
/* cout << mybuf << endl; */initbuf(mybuf);// 由于是传值,所以只是简单的将这个未初始化
//的,谁也不知道是什么的值传给pbuf.//在initbuf运行并且返回的过程中,pbuf得到了值,但是未能free,
//留下了漏洞1。另外,pbuf的值没有传递会mybuf,所以mybuf还是
//垃圾数据。
/* cout << mybuf << endl; *///那么在随后的程序中使用mybuf这个没有初始化的buf*,出现内存错误
//是肯定的了。//在liu_feng_fly,Kevin_qing的版本中,将此函数改造成为了传址。
//因为你的参数是指针,所以只好使用指针的指针了。
//如果用c++,可以用引用&。
main()
{
buf mybuf; //这里不分配内存吗
initbuf(&mybuf);//这里又分配一次,原来的丢失
...
}
buf mybuf;//这里怎么分配了内存呢?没有申请过空间吧
//如果有申请过,那末下一步就发生了泄漏
//char *p只是定义了一个指针而已如有错误,清指出。。感激~。
int i;}void initbuf(buf* pbuf)
{
pbuf=malloc(sizeof(buf));
pbuf->p=NULL;
pbuf->i=0
}main()
{
buf* mybuf=new mybuf;
initbuf(mybuf);//warning
...
}
//如果有申请过,那末下一步就发生了泄漏
//char *p只是定义了一个指针而已
想一想,如果我写int a;//是否会分配内存呢???难道这时候a没被分配内存
//那当我a=5;的时候,5写到什么地方呢?
//那当我a=5;的时候,5写到什么地方呢?
//int a ;会发生内存泄漏吗?
//char *p;只是定义了一个存放指针的空间,而并没有为它联系空间
void initbuf(buf* pbuf)
{
pbuf=malloc(sizeof(buf));
pbuf->p=NULL;
pbuf->i=0
}pbuf分配后指针丢失了
to Kevin_qing(Kevin):回复人:Kevin_qing(Kevin) (2001-5-22 17:14:00) 得0分
**就是指针的指针啊
或者写成
struct buf{ char* p;
int i;}buf* initbuf()
{
pbuf=malloc(sizeof(buf));
pbuf->p=NULL;
pbuf->i=0
}main()
{
buf* mybuf;
mybuf=initbuf();//warning
...
}
=============================================================你的
buf* initbuf()
{
pbuf=malloc(sizeof(buf));
pbuf->p=NULL;
pbuf->i=0
}没有返回 buf* 呀!是否应当改成这样:
buf* initbuf()
{
pbuf=malloc(sizeof(buf));
pbuf->p=NULL;
pbuf->i=0;
return(pbuf);
}
:P我不小心拷贝的时候忘了加return 了~~~哈哈哈