【发布时间】:2020-07-04 18:46:21
【问题描述】:
我目前正在尝试将字符串复制到 void 指针。 这是我正在使用的 void 指针结构。
typedef struct
{
struct runtime_type *runtimeTypeHead; /* Array of Runtime Types */
ST_INT numRuntimeTypes; /* # of Runtime Types in array */
ST_CHAR *dataBuf; /* ptr to local data */
ST_VOID *userInfo; /* To store anything user wants.*/
/* GSE code does not use it. */
} GSE_IEC_DATA_ENTRY;
如你所见,我正在使用 userInfo。
我已经分配了内存并使用了 memcpy,如下面的代码所示。
DataEntry->userInfo = safe_malloc(sizeof(ST_CHAR)*strlen(ps8tmp+1));
memcpy((ST_CHAR*)DataEntry->userInfo, ps8tmp,strlen(ps8tmp));
我想我在将字符串复制到 void 指针时没有遇到内存问题。 然后,当我尝试如下打印复制的字符串时出现段错误。
printf("Updated DataEntry : %s\n", *(ST_CHAR*) DataEntry->userInfo);
谁能指出为什么我在打印字符串时会出现段错误?
【问题讨论】:
-
您正在取消引用 printf 中的 %s 需要指向字符串的指针的字符串。 printf("更新的 DataEntry : %s\n", (ST_CHAR*) DataEntry->userInfo);从你的演员表中删除 *,如下所示。
-
是的。你是对的。谢谢@CodeWhore!!
标签: c string segmentation-fault out-of-memory void-pointers