小编PTd*_*ude的帖子

C - Malloc和memcpy(内存管理)

我对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的说法,现在一切正常.

c malloc struct memcpy

7
推荐指数
1
解决办法
3万
查看次数

标签 统计

c ×1

malloc ×1

memcpy ×1

struct ×1