因此,我正在尝试解除分配上下文。
下面是我创建上下文的方法
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但它给了我seg错误
当我试着
delete[] (char*)uPtr->uc_stack.sS_sp;我不认为它会正确地删除堆栈。有人知道怎么做吗?非常感谢
发布于 2012-04-12 14:56:11
假设您试图在不再使用上下文之后删除堆栈,并且在此期间没有修改uPtr指向的上下文对象,那么
delete [] (char*)uPtr->uc_stack.ss_sp;应该可以工作:你用new[]分配了内存,所以你用delete[]释放了它。为什么你认为它不会呢?
https://stackoverflow.com/questions/7829074
复制相似问题