【发布时间】:2012-04-19 07:34:11
【问题描述】:
我有这个有效的代码(它有点精简):
char *parmList[6];
parmList[0] ="/root/ssl_send";
parmList[1] ="-m 1";
...etc...
parmList[5] = NULL;
execvp(parmList[0], parmList);
现在我想用 sprintf 向这个列表中的一个字符串写一些东西(更正确的说法是我希望 *parmList[6] 的一个指针指向一个用 sprintf 构造的 char 数组)。我一直收到“分段错误”。 我试过了:
- 使用 malloc,
- 声明一个双精度数组以便保留内存空间,
- 使用 snprintf,....
我显然做错了什么。问题与Sprintf Segmentation Fault 类似,只是我需要一个用于 execvp 的指针/char_arrays 列表。
【问题讨论】:
-
您为什么不向我们展示您的尝试而不是告诉我们?
-
您很可能正试图通过导致未定义行为和崩溃的指针修改字符串文字。
-
字符串文字通常是只读的,尝试写入它们是 UB。如果要修改这些,则需要为它们分配内存并复制字符串文字数据。
标签: c string segmentation-fault printf arrays