1

我有一个简单的循环,其目的是将一行(非常简单的)csv 分成列。for循环的相关部分如下:

for (size_t i = 0; i< csvRowReader->_currentRowTextLength; i++)
{
    char character = csvRowReader->_currentRowText[i];

    if (character == ',') { ... }
    ...
}

Dr 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'。我竭尽全力试图找出导致此错误的原因,非常感谢任何帮助!

4

0 回答 0