|
|
1
2
我认为记忆会被破坏。在Windows上(cdecl让我觉得你在使用它),Windows调试工具附带了gflags实用程序。有了它,您可以让每个堆分配都有自己的页面——这将有助于捕获内存溢出,并在出现问题时立即释放内存。 我在博客上写下了说明: 在那里也有找到这种bug的其他技巧。 |
|
|
2
0
我怀疑你的程序的那部分没有问题。最有可能的情况是,您在代码的早期遇到了某种内存损坏,而这恰恰是它出现的地方。 您是否尝试过在调试模式下运行程序的其余部分(在该部分之后)?如果 是 对于某种内存损坏,调试模式分配器应该在解除分配内存损坏区域时捕获它,如果不是更早的话。当然,假设您使用的是带有彻底调试内存分配器的编译器。 |
|
|
3
0
我怀疑这会影响很多人,因为这是相当模糊的,但如果你得到你的文件*像这样:
然后,您将为打开的每个文件泄漏一个流。在执行_open_osfhandle和_fdopen之后,必须在pFile上调用fclose()以关闭句柄。CloseHandle显然不够聪明,无法释放fdopen与您的句柄关联的积垢,但fclose足够聪明,可以关闭您的句柄以及与文件*相关的积垢。 我正在开发的应用程序之所以这样做,是因为某个API传递了句柄,而该API的特定实现者需要一个文件*,所以实现者执行了_fdopen/_open _osfhandle操作来获取一个文件*。然而,这意味着调用方的CloseHandle调用不足以完全关闭句柄。修复方法是首先复制传入句柄,然后FILE*代码可以在不破坏调用方句柄的情况下正确地fclose()文件*。 示例程序:
|
|
|
4
-1
我猜文件名有问题(后面有零吗?) 试着发表评论 福彭 排好队,看看会发生什么。 |
|
|
7BeholdeR7 · 文件夹的重量超过其中的文件(六倍) 4 年前 |
|
|
ilteris · 为什么程序在fscanf后崩溃 4 年前 |
|
Peaceful · 使用fscanf读取C中具有未知行数的文件 4 年前 |
|
|
NOCi · 如何将Tensorflow的结果记录到CSV文件 4 年前 |
|
|
Oakzeh · 如何在字符串索引之前读取文件并删除字符 4 年前 |