Я сейчас пытаюсь скопировать строку в указатель 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);
Кто-нибудь может указать, почему у меня возникает ошибка сегмента, когда я просто печатаю строку?