关于c++的new操作,该怎么处理

关于c++的new操作
示例代码如下:
constr   *p   =   NULL;
int   icount;
inittest(p,icount);
if(NULL   ==   p)
..
else   ...

constr是个结构体,inittest是个函数,我在inittest函数里面有这样的操作:
p   =   new   constr;    
我的问题是,我在inittest函数里面new了内存给p,但是传回到主函数,p还是NULL,没有改变,这是为什么?

------解决方案--------------------
因为这是传值操作 ,不改变实参
一般对于指针的初始化最好这样

constr *p = NULL;
int icount;
inittest(&p,icount)
{
(*p) = new new constr;
}

当然函数的声明就是这样
Return_Type Inittest(constr **p, int icount);
------解决方案--------------------
实参和形参你还没搞清楚吧。
你必须把你的函数声明改成这样 void inittest(constr * & p,int icount);

------解决方案--------------------
你new的空间给了指针的副本
指针没有改变
可能通过传入二级指针,将申请的空间的地址返回
inttest(constr **p,int n)
------解决方案--------------------
其实传值和传址的根本没有区别.
传指针和传值对函数都一样只能修改实参的副本,对实参没影响。
只不过传址能通过指针来改变它指向的内容.



------解决方案--------------------
问题是这样的:
你传递的是object* p;
传递过去之后,在那个函数的作用域内,有一个p的复制品,而不是p本身。
你需要的是引用p,例如&p,或者通过指向指针的指针操作。否则改动始终是临时变量,而你的程序将有内存泄漏。