结果是,一般没问题有问题很扯。
轻则乱码,导致可以找到报错的地方;重则,程序崩溃。如果没有抛出异常可能很难找。
问题现象:
错误码123
自己查找的资料:
打完日志代码中的
设置路径
C:\User\Username\Application Data\gg\x.dat
实际路径
C:\Users\Username\AppData\Roaming\gg\x.dat
可以看到有乱码
部分代码:
…………
size_t policyFileSize = PolicyFile.length();
wchar_t *pPolicyFileBuffer = new wchar_t[policyFileSize+1];
wmemset(pPolicyFileBuffer,'\0',policyFileSize+1); // 添加此代码
………………
出现乱码的原因一般是两个一个是,转码,还有一个是读取不应该读取的“空间”,即是内存;由于该内存写有内容,因此在堆中申请的空间没初始化,但是尚未使用,有内容存在,在再次覆盖的时候就会出现后面的内容没有覆盖会出现乱码;
还有一个崩溃,是由于操作未申请空间,假设policyFileSize 为20.你初始化的空间为40,恰好最后面的10被使用,就可能出现崩溃。
除此之外,微软的磁盘碎片整理,还有一些磁道划分就是因为在分区使用的时候出现的一些零碎的空间进行规划,在“空间”的使用,本质上是重写,类似于原始的磁头再次刻画一样。因此多次刻画可能导致一些分区(应该说是扇区损坏),此时需要使用一些工具,分出这些坏的扇区,在下次使用的时候跳过。
原创就注明出处: