C结构:初始化有问题吗? Valgrind错误
|
用C编码:
typedef struct {
char *string;
int one;
int two;
} Example;
...其他地方:
Example *new = (Example *)malloc(sizeof(Example*));
new->string = strdup(otherstring); //no problem here
new->one = 5; //valgrind says that there is an invalid write of size 4.
我的程序运行良好,只是让valgrind不高兴。这可能意味着我将在其他地方出现其他错误。
我猜我不必声明指向该结构的指针(即,我可以调用\“ example new \”),但是我一直在寻找如何在堆上分配内存的方法,因为我需要从程序的其他部分访问“新”。
我在以上几行中犯了一个错误吗?还是我的错误可能在其他地方?这是valgrind报告的第一个内存错误。
编辑:在我的结构中意外有int * s而不是int。固定。
没有找到相关结果
已邀请:
3 个回复
镰茧钩
不会分配适当的内存量(并且您不需要强制转换)。你要这个:
然后,你这样说:
并且将ѭ5分配给
;这不是一个好主意,而valgrind正确地对此抱怨。如果正确地声明了您的“ 7”,那么您需要这样做:
我怀疑(正如您所说的,一切正常)您真的要这样声明您的
:
但是没有足够的信息来确定。那么您可能仍然对ѭ11有类似的问题。
体悉
臀夯脖锑