我对C有点新,我无法理解内存是如何工作的,尤其是内置函数memcpy.
这是struct我正在使用的
struct data_t {
int datasize;
void *data;
};
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的辅助功能:
struct data_t *data_create(int size)
{
struct data_t *dt=malloc(sizeof(struct data_t)+size);
dt->datasize=size;
dt->data="1234567890a";
return dt;
}
Run Code Online (Sandbox Code Playgroud)
现在在main函数中我没有问题这样做:
struct data_t *data = data_create(1024);
data->data="123456a";//just an example
Run Code Online (Sandbox Code Playgroud)
但是这引发了一个Seg Fault:
memcpy(data->data,"123456a",strlen("1234567890a")+1);
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么?我该如何避免呢?请记住我是C的新手,所以C处理内存对我来说有点新鲜
谢谢.
编辑:它的作品!非常感谢你.完全错过了数据指针.根据valgrind的说法,现在一切正常.