c:传入变量的wordexp

Jon*_*ono 2 c c++ parsing arguments

我似乎无法让这个工作.wordexp()当我称之为:

wordexp("beep", &p, 0);
w = p.we_wordv;
argc = p.we_wordc;
Run Code Online (Sandbox Code Playgroud)

不过,我想在一些值,用户将进入通过,然后得到argvargc从.现在我有以下代码,但我总是收到"分段错误"或"EXC_BAD_ACCESS":

char **parseCommand(char *args, int *argc) {
    printf("args %s\n", args);
    wordexp_t p;
    char **w;
    int i;
    char *beep;

    wordexp(args, &p, 0);

    w = p.we_wordv;
    argc = p.we_wordc;

    wordfree(&p);
    return w;
}
Run Code Online (Sandbox Code Playgroud)

当我打印args时,它会显示它.我甚至试过strcpyargs到另一个字符串.但仍然得到错误.一定是傻事(或者用wordexp不能做到这一点)?

Dan*_*her 5

我怀疑你的问题是

函数wordfree()再次释放分配的内存.更确切地说,它不会释放它的参数,但它释放了数组we_wordv和指向的字符串.

所以你返回一个指向freed内存的指针,当你访问它时,分段错误并不罕见.