我对用户定义线程的上下文内容还不熟悉。我写了一个关于上下文的简单程序。。。但它给了我分割错误。。。
#include<iostream>
#include<ucontext.h>
#include<stdlib.h>
using namespace std;
void fun1()
{
cout<<"from 1";
}
void fun2()
{
cout<<"from 2";
}
int main()
{
ucontext_t a,b;
cout<<"y";
getcontext(&b);
b.uc_link=0;
b.uc_stack.ss_sp=malloc(32767);
b.uc_stack.ss_size=32767;
b.uc_stack.ss_flags=0;
makecontext(&b, fun1, 0);
getcontext(&a);
a.uc_link=&b;
a.uc_stack.ss_sp=malloc(32767);
a.uc_stack.ss_flags=0;
makecontext(&a, fun2, 0);
setcontext(&a);
return 0;
}
`
I want to know how to allocate memory using
新的
而不是马洛克?有什么想法吗??
最佳答案
你忘了:
a.uc_stack.ss_size=32767;
关于c++ - linux中的上下文获取SIGSEGV,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12105336/