我有一个计时器线程和该线程的函数,并且必须将参数 size_t 传递给该函数。
void* global::timer_event::entry_point(void* n)
{
namespace N = global::utils;
struct timeval tv;
size_t* s = (size_t*)n;
N::set_timer(tv, *s);
while(1)
{
if (N::check_timer(tv, *s) == 1)
{
pthread_mutex_lock(&set_queue_mutex);
N::print_queue(q);
pthread_mutex_unlock(&set_queue_mutex);
}
}
}
void global::timer_event::run(size_t n)
{
pthread_create(&m_t, 0, &entry_point, (void*)n);
}
但是程序会在N::set_timer(tv, *s);
这行崩溃
也就是说,当您使用 *s 时。如何做好这种转化?
最佳答案
你的第一个 Actor 是来自 size_t
。
然后将转换为size_t*
。
这显然是错误的。
改为将其转换回 size_t
。
关于c++ - 如何将 void* 转换为 size_t?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19677588/