首页 文章

将命令行字符串复制到数组,valgrind错误

提问于
浏览
0

我期待命令行中的名字,我需要将它们保存在一个数组中 . 我试过的多种方法都不起作用(我正在使用strcpy)而且我得到以下valgrind错误:

Use of uninitialised value of size 8
==23027==    at 0x4C2E1E0: strcpy (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23027==    by 0x400F90: main (pt-cruisers.c:52)
==23027==
==23027== Invalid write of size 1
==23027==    at 0x4C2E1E0: strcpy (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23027==    by 0x400F90: main (pt-cruisers.c:52)
==23027==  Address 0x0 is not stack'd, malloc'd or (recently) free'd

这是代码片段:

char *racern[argc][20];
        Racer *racers[argc];
        pthread_t threads[argc];
        int rc;
        void *returnv;
        for(int i = 1; i < argc; i++){
                strcpy(racern[i-1], argv[i]); <-line 52
        }

我知道名字的长度不会超过20个字符 . 我用argc知道命令行中会有多少名字 . 我假设我没有提供足够的内存,但即使我给了大量的任意数量并且测试了3个名字,我仍然遇到了同样的问题 . 任何帮助表示赞赏!

1 回答

  • 2

    我想你要改变:从: char *racern[argc][20]; 到: char racern[argc][20];

相关问题