c++编程思想chapter12,简单的内存管理系统,谁帮我下
来源:百度知道 编辑:UC知道 时间:2024/07/07 04:35:29
#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
#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
for (int i = 0; i < Framis::PSIZE; i++)
{
f[i] = new Framis;
}
改成这样
你是没I呀
for里的I,是函数for里的局部变量,除非Framis在for里面执行
一般是在Framis里设一个私有变量比如Framis_num,再公开一个函数改这变量