我在使用该memcpy
功能时遇到问题。我需要一个将数据存储到void
指针中的函数。这是一个简单的例子:
void saveData(void* data)
{
char inputData[] = "some data";
memcpy((char*)data, inputData, sizeof(inputData));
}
但是,当我这样做时,我会遇到分段错误,即使它编译得很好。我的函数参数必须是一个void
指针,因为我可能要输入不同的数据格式,而且我可能不提前知道数据的大小。有人可以告诉我我做错了什么吗?
谢谢,麻烦您了。
***更新:感谢所有有用的回复。正如你们大多数人指出的那样,我没有初始化void* data
. 那解决了它。现在我的问题是:当我为void* data
(甚至char* data
)进行动态分配时,我给它一个大小,但是当我这样做时memcpy
,它允许我写一个比我第一次分配空间更大的字符串。我也试过做char* data
,同样的事情发生了。这是我的示例代码:
char inputData[] = "123456789";
void* data1 = malloc(5*sizeof(char));
char* data2 = (char*)malloc(5*sizeof(char));
memcpy(data1,inputData,sizeof(inputData));
memcpy(data2,inputData,sizeof(inputData));
当我打印出结果时,inputData
即使我只为 5 个字符分配了足够的空间,整个字符串也会被复制。那不应该给我一个错误吗?