小编nan*_*ndu的帖子

Git克隆特定版本的远程存储库

我大约一个月前克隆了一个远程git存储库.远程存储库经历了许多变化,现在变得不稳定.现在我需要另一个存储库副本,版本与我一个月前克隆的版本相同.

我该怎么做呢?

git git-clone

167
推荐指数
4
解决办法
25万
查看次数

如何使用alloca分配C函数指针?

C一直是个谜!

我正在实现一个工作组线程执行模型,我试图使用alloca作为更快的内存分配选项.尝试通过使用alloca存储在堆栈中的函数指针执行代码时,我有一个奇怪的分段错误.

这是一个牙齿挑选代码,导致类似的分段错误:

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

typedef void* (*foo)(void*);

typedef struct task
{
    foo f;
} task;

void *blah(void* v)
{
    printf("addr:%p\n", &v);
    return v;
}

int main()
{
    void *queue[10]; 

    task *t = (task*) alloca (sizeof(task));
    // No null check, excuse me!
    t->f = blah;

    queue[0] = (void*)t;
    char string[10] = "Bingo!";
    char *c = &string[0];

    task *tnew = (task*)&queue[0];
    tnew->f((void*)c);

    return 0; 
}
Run Code Online (Sandbox Code Playgroud)

当我执行上面的代码时,我在tnew-> f()行得到了一个分段错误.GDB回溯对我没什么帮助.

请解释上面代码中的错误..我是第一次使用alloca.

非常感谢你!

c function-pointers alloca

0
推荐指数
1
解决办法
434
查看次数

标签 统计

alloca ×1

c ×1

function-pointers ×1

git ×1

git-clone ×1