1
我完全失去了对这个“大小1的无效写”尽管现在正试图寻找一个解决方案了大约两个小时:Ç - Valgrind的 -
Valgrind是吐出了一堆大小的无效读1和这个代码无效写入大小为1,我无法弄清楚如何解决它。
char *movieGetDirector(const movie *m)
{
char *tmp = NULL ;
tmp = malloc(strlen(m->director)+1) ;
strcpy(tmp, m->director) ;
return tmp ;
}
它越来越尺寸1与strlen的行了一个无效的读取,然后在strcpy的线无效写。我知道m-> director绝对是一个字符串,因为使用gdb测试它确实显示它是一个字符串,并且它有文本。谷歌的这个错误的所有解决方案都与那里没有那个+1有关,但是我已经在那里了,这仍然是一个问题。我怎样才能解决这个问题?
什么是'm',它是如何初始化的?什么是'm-> director',它是如何初始化的?请尝试创建一个[最小,完整和可验证示例](http://stackoverflow.com/help/mcve)并向我们展示,包括初始化结构及其成员的方式以及如何调用函数。 –
您确定'm-> director'指向有效内存中的零终止字符串吗? –
确定'm-> director'在传入之前是否已分配/保存好_its_ null终止? –