hooks.cpp
来自「内存受限系统软件开发一书的代码。(虽不及Gang of Four的模式掷地有声」· C++ 代码 · 共 52 行
CPP
52 行
// **************************************************************************
// 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 + =
减小字号Ctrl + -
显示快捷键?