我有一个简单的循环,其目的是将(非常简单的)csv的一行拆分成列。 foor循环的相关部分如下:
for (size_t i = 0; i< csvRowReader->_currentRowTextLength; i++)
{
char character = csvRowReader->_currentRowText[i];
if (character == ',') { ... }
...
}
Memory博士报告了以下未初始化的阅读:
Error #1: UNINITIALIZED READ: reading register eax
CsvRowReader_MoveNext
c:\users\holli\projects\transporter\source\csv\csvrowreader.c(116):
...
现在试图诊断正在进行的操作,查看该行代码的反汇编:
116: if (character == ',')
00D4A40F movsx eax,byte ptr [ebp-35h]
00D4A413 cmp eax,2Ch
00D4A416 jne CsvRowReader_MoveNext+1F5h (0D4A545h)
在00D4A413
,注册EAX
的值为EAX = 0000006E
。这是'n'
:
(char)(0x0000006E)
110 'n'
据我所知,eax
在这种情况下'n'
初始化了一个值。我最终试图弄清楚是什么导致了这个错误,任何帮助都非常感谢!