我有一个功能
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打印任何内容。
我用
调用setCharValsetCharVal(anotherStruct.s);
答案 0 :(得分:0)
makeStruct->s = malloc(sizeof(s);
makeStruct->s = s;
导致内存泄漏,并且什么都没有。
将字符串复制到分配的缓冲区应该怎么做(如果strlen
是字符串,或者来自函数外部,则使用s
给出长度,而不是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;
}