0
A
回答
1
第一个问题,我看到的是,FUNC2没有错误检查。无论valgrind是注意到这一点,还是抱怨别的,我都不确定。
如果你知道,在所有用例FUNC2将永远与std == NULL
被调用,那你就不要需要错误检查。但valgrind无法知道,即使这是真的。是否支票如:
func2(str, line)
{
char * t1 = str, * t2 = str;
if (str == NULL) return;
...
}
有帮助吗?
0
我认为问题是,Valgrind的指出:
str = realloc(str, ....); //this is within the loop
可以设置str
为NULL(如果realloc()
失败)。
看看像下面让Valgrind的快乐:
char* tmp = realloc(str, ...);
if (!tmp) {
abort(); // or some other error handling
}
str = tmp;
相关问题
- 1. RAII和未初始化值
- 2. 值未初始化
- 3. 未初始化的初始值常量
- 4. 未初始化的值 - Valgrind
- 5. C++值初始化
- 6. Valgrind - 未初始化的值和字节?
- 7. 未初始化值8
- 8. C++结构体初始值初始化
- 9. C++ 11的值初始化之前聚集初始化
- 10. 联盟初始化++和C
- 11. c声明和初始化
- 12. 未初始化列表的大小C#
- 13. C++:未初始化的变量垃圾
- 14. 未初始化的变量故障C++
- 15. 未初始化的串联值
- 16. 使用未初始化值的fetchrow后()
- 17. 未初始化的计划值[错误]
- 18. 的Perl -check未初始化值
- 19. Valgrind-未初始化的值消息
- 20. 使用未初始化的值
- 21. 统一和值初始化
- 22. python ctypes国外图书馆初始化和未初始化
- 23. C++初始化
- 24. c#初始化
- 25. C++ - 初始化与骨料初始化
- 26. C结构自动初始化值,数组初始化
- 27. SelectCommand.Connection未初始化
- 28. Applet未初始化
- 29. java.lang.IllegalStateException:ApplicationEventMulticaster未初始化
- 30. SWFUpload未初始化
它看起来就像是抱怨,因为如果str参数进行初始化(进入FUNC2)的valgrind不知道。你可以尝试像'char * t2 = malloc(1); t2 = str;'看看它是否抱怨? –
此外,避免使用'str = realloc(str,....);' - 如果失败,'str'将被设置为'null',并且您将失去指向最初分配的内存的指针到它。这是一个经典的内存泄漏。 –
您的问题可能是由于字符串不正确的空终止引起的,但是如果您发布了func1()的整个代码以及valgrind的错误消息,那只能是可诊断的。 – jpalecek