【发布时间】:2011-12-11 08:38:05
【问题描述】:
所以我正在尝试释放上下文。
这是我创建上下文的方式
ucontext* uPtr = new ucontext;
getcontext(uPtr);
char* stack = new char[STACK_SIZE];
uPtr->uc_stack.ss_sp = stack;
uPtr->uc_stack.ss_size = STACK_SIZE;
uPtr->uc_stack.ss_flags = 0;
uPtr->uc_link = NULL;
makecontext(uPtr, (void (*)()) func, 2, arg1, arg2);
创建上述上下文后,我使用它并在完成后尝试删除 但我不知道如何删除 uPtr->uc_stack.ss_sp。
我试过了
delete[] foo; //suppose I saved the char* stack in foo
但它给了我段错误
当我尝试时
delete[] (char*)uPtr->uc_stack.sS_sp;
我认为它没有正确删除堆栈。 有谁知道如何做到这一点? 非常感谢
【问题讨论】:
-
我不太明白 foo 到底是什么。它是 ucontext 类型还是 char*?当你尝试 delete[](char*)uPtr->uc_stack.ss_sp 时发生了什么?
标签: linux multithreading stack memory-management