Chinaunix

标题: 请问以下两种形式的声名有如何区别 [打印本页]

作者: 怪怪虎    时间: 2006-08-02 11:06
标题: 请问以下两种形式的声名有如何区别
第一种声明
pthread_mutext_t   *mutex;
第二种声明
pthread_mutex_t  mutex.
我也知道一个是指针变量,另外一个是类似整形的变量.
我只所以问,是因为我看到了下面的程序段.
对于第一种情况,要自己malloc一个内存空间,
mutex=(pthread_mutex_t *)malloc(sizeof(pthread_mutex_t)
而对第二种情况则是不用开辟空间.
以下是我的理解.
指针虽然存在了,但是它指向的空间没有实际的开辟(在一定意义上也就是说可能不能被使用,所以要开辟一块.)
而对第二种情况mutex所占的内存空间已经分配好了,我们只需按照对应的位填写内容就可以了.
不知道对不对,望大家指点.
作者: littleliubo    时间: 2006-08-02 11:10
没错,就是这样啊。
作者: net_robber    时间: 2006-08-02 11:11
正解,beagle
作者: 怪怪虎    时间: 2006-08-02 13:20
呵呵,谢谢.老是怀疑自己,
作者: mik    时间: 2006-08-02 13:44
原帖由 怪怪虎 于 2006-8-2 11:06 发表
指针虽然存在了,但是它指向的空间没有实际的开辟(在一定意义上也就是说可能不能被使用,所以要开辟一块.)
...


不能说这句话全对,没有赋值的指针,它也指向某一空间,如果这个空间是受CPU及系统保护的,那就会产生访问违例,这是绝大多数出现的情况。
为它开辟了空间,使用不当一样会出现访问违例。分配的空间是没有界限的,控制避免超限这个情况发生是程序员的职责。
作者: 怪怪虎    时间: 2006-08-02 14:09
理解的很深刻啊,呵呵,知道了
也学习了,呵呵谢谢.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2