有代码
procedure FindBestSubtree(DerevoIdx: Integer);
var
*объявление локальных переменных, среди них*
CurrentHashs: THashItem; // мой класс
begin
if Assigned(CurrentHashs) then // тут уже срабатывает
writelog('Abnormal CurrentHashs', wlCritical);
end;
表明对象已经被创建(甚至一些数据在调试器中是可见的)!该程序是多线程的。以前是正常的,从某个时刻开始(格式化代码后?),突然开始出现错误(目前,只有第一次进入程序时)。问题突然出现了。我在三星 860 QVO SSD 磁盘上犯了罪(没有明显的错误,但在大型 csv 文件中以“,”和“。”临时替换的形式多次注意到奇怪现象)。
德尔福 XE6,赢 8.1。在 win32 下构建时,问题消失(几乎总是)。我不知道在哪里看。
附录:显然,程序的局部变量永远不会自动初始化,并且任何(除了可以行?)。有时在编译过程中可能会重合,使得变量可能包含0,但这并不能保证下次编译和运行时未初始化的变量也会为0。