gpt4 book ai didi

c - 用于 linux 的 char 数组 make context

转载 作者:太空宇宙 更新时间:2023-11-04 11:11:08 26 4
gpt4 key购买 nike

我正在尝试编写一个在 32 位 Linux 中使用 makecontext 的代码man文件包含以下代码

   #include <ucontext.h>
#include <stdio.h>
#include <stdlib.h>

static ucontext_t uctx_main, uctx_func1, uctx_func2;

//function here

int main(int argc, char *argv[])
{
char func1_stack[16384];
char func2_stack[16384];

if (getcontext(&uctx_func1) == -1)
handle_error("getcontext");
uctx_func1.uc_stack.ss_sp = func1_stack;
uctx_func1.uc_stack.ss_size = sizeof(func1_stack);
uctx_func1.uc_link = &uctx_main;
makecontext(&uctx_func1, func1, 0);
// other context code

如何让这段代码适用于更多的上下文,我的主要问题是如何创建一个char funcN_stack数组?我希望这段代码构建在一个函数和上下文大小为 N 的函数中

最佳答案

我想你问的是如何创建一个 N 16384 字节缓冲区数组(用于堆栈):

/* assumption: N is #defined */

char *stacks[N];
int i;
for (i=0; i<N; i++)
{
stacks[i] = malloc(16384);
/* add error handling here if malloc returns NULL */
}

然后使用stacks[x] 作为缓冲区的地址。请注意,您不能使用 sizeof(因为 stacks[i] 是一个简单的指针而不是数组),因此必须直接使用 16384,或者最好使用常量或 #定义

关于c - 用于 linux 的 char 数组 make context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23142079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com