为什么在创建的子线程中不能用CleanupStack?

weakwater 2008-04-25 03:06:04
使用RThread的create创建一个线程:
thread.Create(KThreadName, PlayThreadProc, 0x10000, 0x10000, 0x80000, (TAny*)this);
在子线程的PlayThreadProc中malloc几个字节
void *text = malloc(100);
然后
CleanupStack::PushL( test );
线程就中止了。

CleanupStack有什么特殊要求吗?
在主线程中就工作正常,创建一个线程就不行。
...全文
135 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
weakwater 2008-04-25
  • 打赏
  • 举报
回复
谢谢两位
如果一个线程用到active对象
是不是仍然需要创建active对象?
怎么给线程创建Active Schedule?
weakwater 2008-04-25
  • 打赏
  • 举报
回复
在线程函数PlayThreadProc里面
调用CTrapCleanup::New();吗?

是不是还要设置一下什么?
Atoric 2008-04-25
  • 打赏
  • 举报
回复
If no cleanup stack has been allocated, a panic occurs.
Atoric 2008-04-25
  • 打赏
  • 举报
回复
SDK HELP中提到
CleanupStcak:
Note that for any thread, calling PushL() when no prior call to TRAP has been made, raises an E32USER-CBase 66 panic
Beover1984 2008-04-25
  • 打赏
  • 举报
回复
线程中需要使用CTrapCleanup::New()创建自己的清除栈对象

3,120

社区成员

发帖
与我相关
我的任务
社区描述
塞班系统(Symbian系统)是塞班公司为手机而设计的操作系统,它的前身是英国宝意昂公司的 EP ( Electronic Piece of cheese)操作系统。
社区管理员
  • Symbian社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧