随笔

关于值传递,和地址传递:
一开始,就太注重概念,而忘了实质的东西。写了1年c++还犯这种错误,不应该啊!
函数实质上都是把值(地址其实也是一种值),push进栈。
例子 class *a = NULL;
void func(class *a) {
a = new class;
}
出来的a的值依然是NULL。对class *a 理解时,作为a就是一个存地址的变量就好了。(想想当时写程序竟然犯这样的错误,而且自己当时竟然,浑然不知,理所当然的认为对)

如果想通过这种方法,给a赋值,应该这样写:
class *a = NULL;
void func(class **a) {
*a = new class;
}
func(&a);
这里把a的地址push进函数。

线程:
将线程外部的变量的地址,传入线程内时一定要注意,外部变量的生命周期。否则,可能产生,变量没了,而线程内部还可能继续使用它。
组织程序,总是掌握不好,事前合理的规划,传进去了,指针了,测试才想起来,外部的变量,删除了。就改为复制对象,复制好几遍,十分令人讨厌,复制那么多有必要吗?

写多线程的程序时候,应该考虑的问题:
1.全局变量(相对)的同步问题。
2.是否传入了,局部变量。

posted @ 2012-11-23 23:06  wen_dao_  阅读(131)  评论(0编辑  收藏  举报