相关疑难解决方法(0)

何时以及为什么操作系统会在malloc/free/new/delete上将内存初始化为0xCD,0xDD等?

我知道操作系统有时会使用某些模式(如0xCD和0xDD)初始化内存.我想知道的是何时以及为什么会发生这种情况.

什么时候

这是否特定于编译器使用?

对于这个,malloc/new和free/delete的工作方式是否相同?

它是特定于平台的吗?

它会出现在其他操作系统上,例如Linux或VxWorks吗?

为什么

我的理解是这只发生在Win32调试配置中,它用于检测内存溢出并帮助编译器捕获异常.

你能举一个关于这个初始化如何有用的实际例子吗?

我记得读过一些东西(可能在Code Complete 2中),在分配内存时将内存初始化为已知模式是好的,某些模式会触发Win32中的中断,这将导致调试器中出现异常.

这有多便携?

c c++ memory memory-management

120
推荐指数
3
解决办法
3万
查看次数

Visual Studio调试迭代器

之间是什么关系_SECURE_SCL_HAS_ITERATOR_DEBUGGING.是否可以打开/关闭范围检查并保持二进制兼容性?

2008和2010版本之间有什么区别?

c++ visual-studio

5
推荐指数
1
解决办法
6809
查看次数

访问映射的网络驱动器时,boost 文件系统 create_directories 函数会随机失败

尝试使用 boost 文件系统 create_directories 函数在映射的网络驱动器中创建文件夹时,出现以下类型的随机错误:“系统找不到指定的路径。”。随机我的意思是有时我得到错误,有时我没有。

是的,我已经检查过:

  • 这是一个有效的路径。
  • 这不是一条太长的路。实际上,我使用 Windows 扩展路径作为 \?\PATH。
  • 网络驱动器工作正常,它位于我们公司的本地网络(千兆以太网)内。
  • 我有写权限。
  • 没有unicode字符。

在代码下方(经过调整以使其更简单)。

#include "boost/filesystem.hpp"
#include <string>
#include <chrono>
#include <thread>
#include <iostream>

#define MAX_RETRIES 10
#define RETRY_TIME 5000 //in millisecond

namespace fs = boost::filesystem;

bool createDirectory(const std::string& folderPath)
{        
    //If the function does not succeed to create the directory in first place, it will retry after RETRY_TIME miliseconds a maximum number of MAX_RETRIES.
    for (unsigned int i=0; i<MAX_RETRIES; i++)
    {
        try
        {
            if (fs::create_directories(fs::path(folderPath)))
            {   
                std::cerr << …
Run Code Online (Sandbox Code Playgroud)

c++ boost

5
推荐指数
0
解决办法
1434
查看次数

标签 统计

c++ ×3

boost ×1

c ×1

memory ×1

memory-management ×1

visual-studio ×1