存档

  • VC 运行时库中的 new/delete 使用

    目录

    缘起
    CRT 的动态链接模块

    使用 msvcr[ver].dll 导出的 new

    头文件和模块 msvcr80[d].dll 中 new/delete 的对应
    标量 new 与矢量 new[]
    放置式 new
    no-throw 的 new
    调试版的 new
    new 申请内存失败
    std::set_new_handler 和 _set_new_handler

    使用 msvcr[ver].dll 导出的 delete

    delete 和 delete[]
    两次重复 delete
    delete 空指针
    调试版的 delete

    msvcp80[d].dll 导出的 new/delete
    总结
    参考

    缘起  
    我用 dependency walker(简称 depends)跟了一下,发现 operator new/delete 函数是从 msvcr[ver].dll 中导出的(如图),其中 ver 是 VC 运行时库(CRT)的版本,例如:VC 2005(简称 VC8)环境下,Release 版本为 80,Debug 版本为 80d。本以为 operator new/delete 是从另一个 msvcp[ver].dll 导出的,其实不是,msvcp[ver].dll 有自己导出的 operator new/delete,但并不是我们编程常规用的 [...]

    2010年6月5日 | 归档于 C/C++ 标准库, Windows 程序开发
  • VC 的预定义宏 MSDN 参考

    转存 VC 的预定义宏(Predefined Macros)的 MSDN 参考。这些预定义宏在 VC 的编译器 cl 中产生(可用 /D 选项定义新的宏),或是在 MS 的 C/C++ 标准库/RT 库的头文件中定义,多半的作用是编译或运行时环境的判定,其中有些是标准 C/C++ 规范规定的,比如:
    __cplusplus,__DATE__,__FILE__,__LINE__ 等。
    有些是 cl 和 MS C/C++ RT 特定的,比如:_MSC_VER。例如这样使用 _MSC_VER,判定 cl 编译环境的版本:

    2010年4月1日 | 归档于 C/C++ 编程语言, Windows 程序开发, 开发工具
  • 自译 WSARecv() 参考

    翻译了一部分 Winsock 中我不是很理解的 WSARecv() 行为的 MSDN 参考,按照自己的理解翻译的,旨在梳理处理逻辑。
    MSDN 的 WSARecv() 参考:WSARecv()

    2010年3月10日 | 归档于 Windows 程序开发
‘Windows 程序开发’ 分类的存档