请问一个lib,exe的内存有关问题

请教一个lib,exe的内存问题
a.lib 中定义了一个全局指针 p,并 有一个init_p的函数给p分配内存

b.lib 中有一系列函数会调用a.lib中的函数,而a.lib中这些被调用的函数会用到指针p

c.exe 调用a.lib中的init_p对p进行初始化,然后c.exe中有一个函数调用b.lib中的函数funcb, funcb调用 a.lib中的funca函数,这个时候funca去访问指针p,有问题吗? 

我现在遇到的情况是c.exe 中调用init_p之后,p指针是正常的,而在funca去访问p时,p变成空指针了。

------解决方案--------------------
帖点代码才行,有时说的是对的,写的代码不一定跟自己想要的一样。
------解决方案--------------------
调用init_p要用二级指针,如:
void init_p(char **p)
{
*p=(char *)malloc(200*zizeof(char));
}
调用时
char *p;
init_p(&p);

或用返回值:
char *init_p()
{
char *p=malloc(200*zizeof(char));
return p;
}
调用时
char *p;
p=init_p();

否则,指针是无效的
所以,一般不推荐这种做法