c++ - 如何将 void* 转换为 size_t?

标签 c++ parameters casting pthreads

我有一个计时器线程和该线程的函数,并且必须将参数 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/

相关文章:

c++ - 带有类型别名的函数指针参数

c++ - 使用 Gdiplus::Graphics::DrawText 在黑色背景上绘制白色文本时出现问题

c++ - char 到 char* 的转换无效 - 将字符串数组中的 char 复制到另一个字符串数组

c# - 如何获取 List<of anonymous type> 字段的值(加上转换)?

java.lang.ClassCastException 套接字 readObject

c++ - 如何处理霍夫变换中的负 rho 值?

c - 在 C 中传递和返回二维数组

java - 子类中具有不同值的静态参数

variables - 将变量作为参数传递给 TCL 中的 awk 文件

java - Java 中的原始类型转换(令人不安的示例)