-1

我有一个功能

setCharVal(char *s, int value){
   valueStruct* makeStruct = malloc(sizeof(valueStruct));
   makeStruct->s = s;
   //set other values
}

valueStruct 有一个 char*s; 当我打印进入函数的 s 时,这很好,但是当我打印 makeStruct->s 时,它什么也没打印。

我试过了

makeStruct->s = strdup(s);

makeStruct->s = malloc(sizeof(s);
makeStruct->s = s;

这些都不起作用;它仍然没有为 makeStruct->s 打印任何内容。

我打电话给 setCharVal

setCharVal(anotherStruct.s);
4

1 回答 1

0
makeStruct->s = malloc(sizeof(s);
makeStruct->s = s;

导致内存泄漏,并且一无所获。

你应该怎么做才能将字符串复制到分配的缓冲区(另外,长度是使用strlenifs是一个字符串或从函数外部给出的,not sizeof):

// added valueStruct* because I assume you want to return it from the function
valueStruct* setCharVal(char *s,size_t s_size int value){
   valueStruct* makeStruct = malloc(sizeof(valueStruct));
   makeStruct->s = malloc(s_size);
   memcpy(makeStruct->s, s, s_size);
   // ..
   return makeStruct;
}
于 2013-02-18T18:05:26.580 回答