资源简介
侯捷老师:C++内存管理课件(PDF高清).rar
代码片段和文件信息
// author : Hou Jie (侯捷)
// date : 2015/11/11
// compiler : DevC++ 5.61 (MinGW with GNU 4.9.2)
//
// 說明:這是侯捷 E-learning video “C++內存管理“ 的實例程式.
// 該課程的所有測試都出現在此.
// 每一個小測試單元都被放進一個 namespace 中
// 如此保持各單元間最大的獨立性.
// 每個 namespace 上方皆有該單元相應的 #include <...>
// 因此有可能整個程式重複含入 (included) 某些 headers
// 這無所謂,因為每個 standard headers 都有自我防衛機制,不讓自己被 included 二次.
//
// 本文件用到若干 GNU C++ extended allocators,所以你或許需要在你的集成環境 (IDE) 上設定 “C++11 on“.
// 我已將相關代碼包裝在 編譯條件選項 __GNUC__ 中。
/*
#include
#include
#include
#include //strlen()
#include
#include
*/
using namespace std;
//----------------------------------------------------
#include
#include
#include //std::allocator
#include //欲使用 std::allocator 以外的 allocator 就得自行 #include
namespace jj01
{
void test_primitives()
{
cout << “\ntest_primitives().......... \n“;
void* p1 = malloc(512); //512 bytes
free(p1);
complex* p2 = new complex; //one object
delete p2;
void* p3 = ::operator new(512); //512 bytes
::operator delete(p3);
//以下使用 C++ 標準庫提供的 allocators。
//其接口雖有標準規格,但實現廠商並未完全遵守;下面三者形式略異。
#ifdef _MSC_VER
//以下兩函數都是 non-static,定要通過 object 調用。以下分配 3 個 ints.
int* p4 = allocator().allocate(3 (int*)0);
allocator().deallocate(p43);
#endif
#ifdef __BORLANDC__
//以下兩函數都是 non-static,定要通過 object 調用。以下分配 5 個 ints.
int* p4 = allocator().allocate(5);
allocator().deallocate(p45);
#endif
#ifdef __GNUC__
//以下兩函數都是 static,可通過全名調用之。以下分配 512 bytes.
//void* p4 = alloc::allocate(512);
//alloc::deallocate(p4512);
//以下兩函數都是 non-static,定要通過 object 調用。以下分配 7 個 ints.
void* p4 = allocator().allocate(7);
allocator().deallocate((int*)p47);
//以下兩函數都是 non-static,定要通過 object 調用。以下分配 9 個 ints.
void* p5 = __gnu_cxx::__pool_alloc().allocate(9);
__gnu_cxx::__pool_alloc().deallocate((int*)p59);
#endif
}
} //namespace
//----------------------------------------------------
#include
#include
//#include //std::allocator
namespace jj02
{
class A
{
public:
int id;
A() : id(0) { cout << “default ctor. this=“ << this << “ id=“ << id << endl; }
A(int i) : id(i) { cout << “ctor. this=“ << this << “ id=“ << id << endl; }
~A() { cout << “dtor. this=“ << this << “ id=“ << id << endl; }
};
void test_call_ctor_directly()
{
cout << “\ntest_call_ctor_directly().......... \n“;
string* pstr = new string;
cout << “str= “ << *pstr << endl;
//! pstr->string::string(“jjhou“);
//[Error] ‘class std::basic_string‘ has no member named ‘string‘
//! pstr->~string(); //crash -- 其語法語意都是正確的 crash 只因為上一行被 remark 起來嘛.
cout << “str=
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 15850 2015-11-17 19:23 侯捷老师:C++内存管理课件\allocc.h
文件 96268 2015-11-17 19:23 侯捷老师:C++内存管理课件\C++內存管理示例.cpp
文件 184322 2015-12-23 17:20 侯捷老师:C++内存管理课件\C++内存管理简介-侯捷.pdf
文件 36386090 2015-12-23 15:45 侯捷老师:C++内存管理课件\内存管理.pdf
文件 7959780 2015-12-23 17:40 侯捷老师:C++内存管理课件\内存管理第五讲.pdf
文件 79 2017-11-28 15:44 侯捷老师:C++内存管理课件\说明.txt
目录 0 2017-11-28 15:44 侯捷老师:C++内存管理课件
----------- --------- ---------- ----- ----
44642389 7
- 上一篇:GDAL图片裁剪程序
- 下一篇:算法经典VC++数值分析
相关资源
- 算法经典VC++数值分析
- Data Structures and Algorithms in C++ 4th edit
- 3D骨骼动画“剑舞”程序源码by浅墨
- 3D游戏场景漫游4.0版程序源码by浅墨
- 3D场景漫游2.0版程序源码 by浅墨
- 3D场景漫游程序源码 by浅墨
- 3D镜面特效程序源码 by浅墨
- 一个回合制游戏demo
- Visual C++面向对象与可视化程序设计(
- 基于winpcap网络嗅探器 VC++ 中科院课设
- Cross-Platform GUI Programming with wxWidgets中
- 基于UDP的MFC 通讯小程序
- BTree数据结构课程设计C++版
- 基于MFC的多线程编程以及在Picture Co
- 研华工控机C++代码
- C++语言导学
- 精通Visual C++数字图像处理典型算法及
- C++ GUI Qt 4编程第二版.pdf中文版,含目
- MFC学生选课系统
- 数据结构C++版习题解答与实验指导.
- Effective C++改善程序与设计的55个具体
- 局域网监控系统demo含源代码
- C+++编程艺术(教程+源码)
- c++项目开发全程实录 随书源代码 刘志
- C++大作业学生信息管理系统
- rpm方式不联网安装gcc、gcc-c++
- 基于VC++和OpenGL实现的IGM机器人手臂三
- C++-primer-5.mobi(适合kindle
- 网上超市购物管理系统C++源代码
- Visual c++ MFC 棋牌类游戏编程麻将
评论
共有 条评论