簡體   English   中英

C函數指針無效值問題

[英]C Function Pointer void value issue

我一直在為操作系統類分配作業(因此,請僅提供技巧,沒有完整的答案),而一個函數的參數和返回類型由我的講師提供但我的內容由我填充的一個函數拋出錯誤。 功能如下:

void start_thread(void (*function)(void))
{
    TCB_t* stackPointer = malloc(8192); //8192 is a provided value for assignment
    TCB_t tcb;
    tcb = init_TCB(&tcb, function, stack, sizeof(stack));
    AddQueue(RunQ, tcb);
}

下面的函數是從引發錯誤的那一行開始的,此函數是為分配定義的,不應更改。

void init_TCB (TCB_t *tcb, void *function, void *stackP, int stack_size)
{
     memset(tcb, '\0', sizeof(TCB_t));
     getcontext(&tcb->context);
     tcb->context.uc_stack.ss_sp = stackP;
     tcb->context.uc_stack.ss_size = stack_size;
     makecontext(&tcb->context, function, 0);
}

我不熟悉C語言,尤其是函數指針的概念,但是我的所有研究都表明該代碼不應引發錯誤,但會不斷引發以下問題:

錯誤:空值不應該被忽略

tcb = init_TCB(&tcb, function, stack, sizeof(stack));

需要是

init_TCB(&tcb, function, stackPointer, 8192);

我會讓您弄清楚為什么這些更改有意義。

如果它們沒有意義,請添加評論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM