MFC 文件名、目录名或卷标语法不正确(错误码123)

版权声明:原创作品请注明出处: Ma_Hong_Kai CSDN https://blog.csdn.net/Ma_Hong_Kai/article/details/83149686

吃下老本

Ma_Hong_Kai

结果是,一般没问题有问题很扯。

轻则乱码,导致可以找到报错的地方;重则,程序崩溃。如果没有抛出异常可能很难找。

问题现象:

错误码123

自己查找的资料:

错误123:文件名、目录或卷标语法错误怎么解决

扫描二维码关注公众号,回复: 3634142 查看本文章

文件名、目录名或卷标语法不正确原因(百度经验)

打完日志代码中的

设置路径

C:\User\Username\Application Data\gg\x.dat

实际路径

C:\Users\Username\AppData\Roaming\gg\x.datgg(乱码显示不出来当时没截图)

可以看到有乱码

部分代码:

…………

size_t policyFileSize = PolicyFile.length();

wchar_t *pPolicyFileBuffer = new wchar_t[policyFileSize+1];

wmemset(pPolicyFileBuffer,'\0',policyFileSize+1);  // 添加此代码

………………

出现乱码的原因一般是两个一个是,转码,还有一个是读取不应该读取的“空间”,即是内存;由于该内存写有内容,因此在堆中申请的空间没初始化,但是尚未使用,有内容存在,在再次覆盖的时候就会出现后面的内容没有覆盖会出现乱码;

还有一个崩溃,是由于操作未申请空间,假设policyFileSize 为20.你初始化的空间为40,恰好最后面的10被使用,就可能出现崩溃。

除此之外,微软的磁盘碎片整理,还有一些磁道划分就是因为在分区使用的时候出现的一些零碎的空间进行规划,在“空间”的使用,本质上是重写,类似于原始的磁头再次刻画一样。因此多次刻画可能导致一些分区(应该说是扇区损坏),此时需要使用一些工具,分出这些坏的扇区,在下次使用的时候跳过。

Ma_Hong_Kai 学习笔记,如有错误之处,欢迎指正

猜你喜欢

转载自blog.csdn.net/Ma_Hong_Kai/article/details/83149686
今日推荐