[英]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.