`
frenchmay
  • 浏览: 231343 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

c++编程思想chapter12,简单的内存管理系统

阅读更多
#include <stddef.h>
#include <fstream.h>

ofstream out("framis.out");

class Framis
{
	char c[10];
	static unsigned char pool[];
	static unsigned char alloc_map[];
public:
	enum { PSIZE = 100 };
	Framis() { out << "framis()\n"; };
	~Framis() { out << "~framis()...\n"; };
	void * operator new (size_t);
	void operator delete(void *);
};

unsigned char Framis::pool[PSIZE * sizeof(Framis)];
unsigned char Framis::alloc_map[PSIZE] = { 0} ;

void * Framis::operator new(size_t sz)
{
	for(int i = 0; i < PSIZE; i++)
		if(!alloc_map[i])
		{
			out << "using block " << i << "...";
			alloc_map[i] = 1;
			return pool + (i * sizeof(Framis));
		}
	out << "out of memory" << endl;
	return 0;
}

void Framis::operator delete(void * m)
{
	if(!m)
		return;
	unsigned long block = (unsigned long)m
		- (unsigned long)pool;
	block /= sizeof(Framis);
	out << "freeing block " << endl;
	alloc_map[block] = 0;
}

int main()
{
	Framis * f[Framis::PSIZE];
	for (int i = 0; i < Framis::PSIZE; i++)
	{
		f[i] = new Framis;
	}
	new Framis;
	delete f[10];

	Framis * x = new Framis;
	delete x;
	for (int j = 0; j < Framis::PSIZE; j++)
	{
		delete f[j];
	}
	
	return 0;
}
 
分享到:
评论

相关推荐

    C++编程思想 编程思想

    《C++编程思想》是一本深受程序员喜爱的经典之作,它深入浅出地讲解了C++这一强大而复杂的编程语言。本书旨在帮助读者理解和掌握C++的核心概念,包括面向对象编程、泛型编程以及设计模式等关键主题。通过阅读这本书...

    C++编程思想C++编程思想

    C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想...

    C++编程思想pdf 中文版

    《C++编程思想》是一本深受程序员喜爱的经典教程,由Bruce Eckel著,中文版的出版使得更多中国读者能够深入理解C++这门强大的编程语言。这本书不仅涵盖了C++的基础知识,还深入探讨了面向对象编程的概念和技术,是...

    C++编程思想(Thinking in C++)完美版pdf

    Bruce Eckel 《Thinking in Java》(Java编程思想)作者。Eckel有20年专业编程经验,并自1986年起教育人们如何撰写面向对象程序,足迹遍及全球,成为一位知名的 C++教师和顾问,如今兼涉Java。他是C++标准委员会拥有...

    C++编程思想.第2卷.实用编程技术(pdf)

    《C++编程思想》是Bjarne Stroustrup编著的一部经典C++教程,分为两卷,其中第二卷主要探讨了C++的实用编程技术。这本书深入浅出地介绍了C++语言的各种特性,旨在帮助读者理解并掌握C++的核心概念和高级特性,提升...

    C++编程思想 C++编程思想 C++编程思想 C++编程思想

    C++编程思想是深入理解C++这门语言的关键,它涵盖了C++的各个方面,包括基本语法、面向对象编程、模板元编程以及STL等。在C++编程中,理解其核心概念是提升编程效率和写出高效代码的基础。 首先,C++作为一门强类型...

    C++编程思想[第二卷]pdf

    7. **内存管理**:C++提供了对内存的直接控制,理解动态内存分配(new、delete)、内存对齐以及智能指针(shared_ptr、unique_ptr、weak_ptr)的使用,对于避免内存泄漏和提高程序效率至关重要。 通过深入阅读《C++...

    c++编程实战:宾馆客房管理系统.zip

    c++编程实战:宾馆客房管理系统.zip c++编程实战:宾馆客房管理系统.zip c++编程实战:宾馆客房管理系统.zip c++编程实战:宾馆客房管理系统.zip c++编程实战:宾馆客房管理系统.zip c++编程实战:宾馆客房管理系统....

    c++编程项目:宾馆客房管理系统.zip

    c++编程项目:宾馆客房管理系统.zip c++编程项目:宾馆客房管理系统.zip c++编程项目:宾馆客房管理系统.zip c++编程项目:宾馆客房管理系统.zip c++编程项目:宾馆客房管理系统.zip c++编程项目:宾馆客房管理系统....

    c++编程思想 PDF

    《C++编程思想》是一本深受程序员喜爱的经典之作,由Bruce Eckel撰写,全面而深入地探讨了C++编程语言的各个方面。这本书以其独特的视角和深入浅出的讲解,不仅适合初学者入门,也为经验丰富的程序员提供了宝贵的...

    c++编程思想(pdf)

    《C++编程思想》是一本...通过深入学习《C++编程思想》,读者不仅可以掌握C++的基础知识,还能理解如何运用这些知识去构建高效、可维护的系统。书中丰富的实例和清晰的解释将帮助读者逐步成长为一名精通C++的程序员。

    C++编程思想pdf

    《C++编程思想》是C++编程领域的一部经典著作,由Bjarne Stroustrup,也就是C++语言的设计者之一编写。这本书深入浅出地介绍了C++编程的核心概念、设计模式以及编程技巧,旨在帮助读者理解并掌握C++的精髓。 首先,...

    c++编程项目:个人收支管理系统.zip

    c++编程项目:个人收支管理系统.zip c++编程项目:个人收支管理系统.zip c++编程项目:个人收支管理系统.zip c++编程项目:个人收支管理系统.zip c++编程项目:个人收支管理系统.zip c++编程项目:个人收支管理系统....

    c++编程实战:个人收支管理系统.zip

    c++编程实战:个人收支管理系统.zip c++编程实战:个人收支管理系统.zip c++编程实战:个人收支管理系统.zip c++编程实战:个人收支管理系统.zip c++编程实战:个人收支管理系统.zip c++编程实战:个人收支管理系统....

    C++编程思想(全册pdf格式)

    《C++编程思想》是一本深受程序员喜爱的经典教程,它由Bjarne Stroustrup,C++语言的设计者和创造者编写。这本书分为上下两册,全面深入地探讨了C++语言的核心概念、设计模式以及编程实践。在这里,我们将详细讨论书...

    C++编程思想 pdf

    6. **智能指针**:为了解决原始指针可能导致的内存管理问题,C++引入了智能指针(如auto_ptr、unique_ptr、shared_ptr),它们自动管理对象的生命周期,防止内存泄漏。 7. **C++11及后续标准**:自C++11开始,标准...

    c++编程思想: 两卷合订本

    c++编程思想: 两卷合订本 pdfc++编程思想: 两卷合订本 pdfc++编程思想: 两卷合订本 pdf

    C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想C++编程思想

    《C++编程思想》这本书深入探讨了C++这一强大的编程语言,它不仅是对传统编程的扩展,更是面向对象编程(OOP)理念的体现。面向对象编程的核心在于对象,对象结合了数据(特性)和行为,是现实世界问题抽象化的基础...

    Thinking in C++ 中文版(C++编程思想)

    6. **内存管理(Memory Management)**:C++提供了指针操作,让程序员可以直接控制内存,但同时也要求开发者有良好的内存管理意识,避免内存泄漏和悬挂指针等问题。 7. **C++11及其后续标准**:自C++11开始,语言...

Global site tag (gtag.js) - Google Analytics