malloc()函数
调用
void get(int **p,int num)
{
*p=(int *)malloc(num*sizeof(int));
return;
}
为什么不能改成
void get(int *p,int num)
..............
请高手指点。。。。。
我感觉没有必要用二级指针,我们的目的主要是为了让主函数中的指针的地址指向一个空内存。我们完全可以通过传递这个指针的地址到子函数中,然后给这个指针的地址分配内存就可以了。例如下面这个程序就是正确的。根本没有必要使用到二级指针呀。
这么改不行。。。。书上说,像你那样改出现野指针!书上明确指出通过函数给指针变量分配内存,必须用二级指针。。。。。我想知道必须这么干的理由。。。
追答书是死的,人是活的,书上的不是完全对的。主要看你用什么编程工具,要是你用的是VC6.0我没活说。不过还有一个问题,在你函数return前要free掉p。否则就真有问题,不过如果不是大型程序,问题也不大,只是暂时的内存泄漏。就算你使用了二级指针free这个动作也是有必要的。