c++ - strchr函数内的Valgrind memcheck错误
问题描述
Valgrind 在 strchr 函数中报告以下 memcheck 错误
==5801== Conditional jump or move depends on uninitialised value(s)
==5801== at 0x34BB32865A: __strchr_sse42 (in /lib64/libc-2.12.so)
我将 gdb 链接到 valgrind 以可能遍历他的 strchr 代码,但我不能这样做。我所有的局部变量都已初始化,程序运行良好。我不明白 valgrind 错误来自哪里
bool
Graph::CheckValues( cfgs_val_t & cfgs, const char * mval )
{
int matched = 1, av = -1, ev = -1; char * mv, * p1, * p2, * p3, * fn, * args;
cfgs_val_t::iterator iter; bool cfg_anyval = false;
mv = strdup( mval );
p1 = mv;
p2 = p1;
for( ; ; )
{
if( *p2 == '=' )
{
*p2 = '\0';
p3 = strchr( p1, '(' );
if( p3 != nullptr )
{
return true;
}
}
}
我的代码工作得很好,除了 valgrind 错误
解决方案
推荐阅读
- python - 将 selenium 驱动程序连接到 CEF 桌面应用程序
- python - 自定义 Keras 层因功能性 API 而失败
- javascript - React js数组中的警告
- java - 用户登录时登录和将用户信息读入文本字段的问题
- android - 在使用 RX 和改造 Android 时处理 PDF 响应
- java - JavaFx - 如果值都相同,如何获取按钮数组索引
- kotlin-native - Tensorflow Kotlin/Native 在'中找不到'main'
' 包裹 - javascript - 将 HTTP 预加载与 EventSource/Server 发送事件一起使用?
- c# - 在 C# 项目中是否有存储重要数据的文件?
- php - 创建和填充变量变量的值