⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hooks.cpp

📁 内存受限系统软件开发一书的代码。(虽不及Gang of Four的模式掷地有声
💻 CPP
字号:
// **************************************************************************
// Hooks.cpp
//
// C code to implement hooks.
// **************************************************************************

#include <iostream.h>
#include <assert.h>

typedef void* sysobj;

const int SIO_HOOK_TABLE_SIZE = 100;
const int SIO_MEMALLOC = 0;

typedef sysobj (*sio_hook_function) (sysobj) ;

extern sysobj sio_memalloc( sysobj );

sio_hook_function sio_hook_table[SIO_HOOK_TABLE_SIZE];

sysobj sio_memalloc( sysobj ) {
    return (sysobj)0;
}
void *memalloc(size_t bytesToAllocate) {
    return (void*)sio_hook_table[SIO_MEMALLOC]((sysobj)bytesToAllocate);
}

static sio_hook_function original_memalloc  = 0;
static size_t mem_counter = 0;


sysobj mem_counter_memalloc(sysobj size) {
    mem_counter += (size_t)size;
    return original_memalloc( size );
}

int main() {
    sio_hook_table[SIO_MEMALLOC] = sio_memalloc;

    (void)memalloc( 10 );
    assert( mem_counter == 0 );

    original_memalloc = sio_hook_table[SIO_MEMALLOC];
    sio_hook_table[SIO_MEMALLOC] = mem_counter_memalloc;

    (void)memalloc( 10 );
    assert( mem_counter == 10 );
    cout << "Completed\n";
    cin.get();
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -