工作总结之指针的引用
来源:互联网 发布:飞鱼网络电视tv 编辑:程序博客网 时间:2024/04/27 17:32
下面的代码不稳定,使用CVideoReplayer提供的职责时有时会出错。
unsignedlong WINAPI CSysncReplayer::DoReplayVideo( void * para )
{
try
{
CSysncReplayer * replayer = (CSysncReplayer*)para;
CVideoReplayer * videoReplayer =replayer->m_videoReplayer;
//begine read video info
while ( 1 )
{
……
}
……
}
……
}
代码分析:这是一个线程函数,当线程被中断后又继续执行的时候,就会出错。仔细分析线程被中断后又继续执行的代码,发现每次CSysncReplayer的成员变量m_videoReplayer都会被重新生成。
再看上面的代码的这一行:
CVideoReplayer *videoReplayer = replayer->m_videoReplayer;
重新定义一个指针指向replayer->m_videoReplayer;请注意:这行代码在线程中断后继续时不会被执行到。
举个相同的简单例子来说:
intn = 1;
int *p1 = &n;
int *p2 =p1;
我们看一下内存
P1,p2指向同一个地方,就是变量n的地址;但是当p1指向新的变量,p2由于某种原因(看上面红色加粗体的提示)不更新,p2便与p1指向不同的地方,并且p2指向的是一个“不再使用的地址”。那么再使用p2的话肯定就会出错。
找到出错原因后,就好解决了。为了保证在int *p2 =p1;这行代码不被执行的情况下p2能与p1保持一致,需要想想办法。
此时指针的引用和指针的指针就派上用场了。
int *&p2 =p1; 或者int **p2 = &p1;于是,
CVideoReplayer *videoReplayer = replayer->m_videoReplayer;修改为
CVideoReplayer *&videoReplayer = replayer->m_videoReplayer;
问题解决。
- 工作总结之指针的引用
- 工作总结之引用第三方库
- 指针、指针的引用
- C++之 引用和指针的区别!
- c++之指针类型的引用
- 引用、指针的指针、指针的引用
- 形参为指针和指针的引用之差别
- c++之引用,指针 ;
- c++之指针&&引用
- 指针 指针的引用 指针的指针
- java之路的工作总结
- C++中引用,指针,指针的引用,指针的指针
- C++中引用,指针,指针的引用,指针的指针
- 指针*、引用&、地址&、指针的引用*&、指针的指针**
- 指针与指针的引用
- 指针和指针的引用
- 指针与指针的引用
- 指针与指针的引用-
- 八种排序算法总结
- 那些日夜想念你的泪水 是咸的我的心还是会痛
- 加快MyEclipse加载速度
- 深入Linux内核网络堆栈-----转帖
- 彻底解决C#实现DataTable导出EXCEL表格
- 工作总结之指针的引用
- poj 1258 最小代价网络
- 软考复习——操作系统
- 构造方法注入bean 的使用
- Sqlite 3.7.14.1 xxtea 加密算法
- 非常简单的SQLite的Java程序
- linux 的 IP 及网关设置
- 使用BroadCast 使 service 和activity 信息交互
- 关于js关闭窗口的事件和用法