首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ucontext*,linux中释放堆栈?

如何在ucontext*,linux中释放堆栈?
EN

Stack Overflow用户
提问于 2011-10-20 06:37:59
回答 1查看 2.5K关注 0票数 2

因此,我正在尝试解除分配上下文。

下面是我创建上下文的方法

代码语言:javascript
复制
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。

我试过了

代码语言:javascript
复制
delete[] foo; //suppose I saved the char* stack in foo

但它给了我seg错误

当我试着

代码语言:javascript
复制
delete[] (char*)uPtr->uc_stack.sS_sp;

我不认为它会正确地删除堆栈。有人知道怎么做吗?非常感谢

EN

回答 1

Stack Overflow用户

发布于 2012-04-12 14:56:11

假设您试图在不再使用上下文之后删除堆栈,并且在此期间没有修改uPtr指向的上下文对象,那么

代码语言:javascript
复制
delete [] (char*)uPtr->uc_stack.ss_sp;

应该可以工作:你用new[]分配了内存,所以你用delete[]释放了它。为什么你认为它不会呢?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7829074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档