创建线程时出现分段错误(核心转储)错误

我不确定如何调试此错误,因为它可能是由很多原因引起的。我能做的是注释掉程序的某些部分,并反复编译以跟踪程序的哪一部分产生了错误,我认为这部分产生了错误:

在这里我想创建一个线程:

int j = 0; //not the actual value, just showing that j is of type int
pthread_create(&thread_id, NULL, strikeMultiples, (void*)j);

也许也可能是由于strikeMultiples函数引起的,该函数在创建线程时被调用:

static void* strikeMultiples(void* prime) {
    int * primej = (int *) prime;
    int j = *primej;
    free (prime);
    int k;
    for (k = 2; j * k <= NROF_SIEVE; k++) {
        BIT_CLEAR(buffer[(j * k)/64], (j * k)%64);
    }
    return NULL;
}
dbush

问题是您将an传递int给该函数(传递给void *),然后尝试将其读取为int *

另外,您正在尝试free未从malloc和家人那里退回的东西

传递int的地址,但不要free在函数中传递它。同样,也不必在avoid *和任何非函数指针之间进行强制转换。

static void* strikeMultiples(void* prime) {
    int *primej = prime;
    int j = *primej;
    int k;
    for (k = 2; j * k <= NROF_SIEVE; k++) {
        BIT_CLEAR(buffer[(j * k)/64], (j * k)%64);
    }
    return NULL;
}

...

pthread_create(&thread_id, NULL, strikeMultiples, &j);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

创建链表会出现分段错误(核心转储)错误

执行代码时出现分段错误(核心转储)错误

多线程分段错误(核心转储)

使用 apt 升级时出现分段错误(核心转储)

运行代码时出现核心转储/分段错误

核心转储分段错误

strcmp 出现分段错误(核心转储)错误

声明int变量时出现分段错误(核心转储)错误

尝试从数组复制时出现分段错误(核心转储)错误

如何避免出现分段核心转储错误?

信号:分段错误(核心转储)错误

使用ctypes传递2d numpy数组时出现分段错误(核心转储)

使用 pthread_create 时出现“分段错误(核心转储)”

使用ffmpeg并指定开始时间时出现分段错误(核心转储)

在 C、Linux 中递归列出目录和文件时出现分段错误(核心转储)

在分配了new []的阵列上使用avx时出现分段错误(核心转储)

在C中使用getchar()时出现分段错误(核心转储)?

尝试使用 (char**)malloc() 分配内存时出现分段错误(核心转储)

进行分段时出现分段错误(核心已转储)

C 中的分段错误(核心转储) - 使用 PTHREADS 时

使用 fscanf 时 C 中的分段错误(核心转储)

fclose() 以“分段错误(核心转储)”结尾

OSMNx,分段错误(核心转储)

C - 获取分段错误(核心转储)

RPC:分段错误(核心转储)

C ++:分段错误(核心转储)问题

分段错误(核心转储)需要建议

分段错误(核心转储)C ++-指针

分段错误(核心转储)C++