自定義實現記憶體池

2021-08-22 19:20:31 字數 1461 閱讀 7290

記憶體池:

1.建立乙個結構體管理記憶體池。

2.過載new和delete操作符

3.執行new時,「先執行過載new操作符函式」,再執行「建構函式」!!

4.執行delete時,「先執行虛構函式」,再執行「過載delete操作符函式」

**:

struct st_memorypool

~st_memorypool()

}void usingsize(int n)

pusestart = pusestart + n;

usesize += n;

}void* operator new(size_t size)

cout << "new分配記憶體: " << sizeof(st_memorypool) * sizeof(char) << endl;

return (void*)malloc(sizeof(st_memorypool) * sizeof(char));

}void operator delete(void* st)

free(st);

st = null;

cout << "delete釋放結構體內存 " << endl;

}int main()

{ st_memorypool* st_mp = new st_memorypool(1024);

cout << 「st_mp.totalsize: 」 << st_mp->totalsize << endl;

int* a = (int*)(st_mp-> pusestart);

*a = 200;

st_mp->usingsize(100);

float* b = (float*)(st_mp->pusestart);

*b = 1000;

st_mp->usingsize(300);

double* c = (double*)(st_mp->pusestart);

*c = 1500;

st_mp->usingsize(600);

int* aa = (int*)(st_mp->pstart);

cout << "aa: " << *aa << endl;

float* bb = (float*)(st_mp->pstart+100);

cout << "bb: " << *bb << endl;

double* cc = (double*)(st_mp->pstart + 100+300);

cout << "cc: " << *cc << endl;

delete st_mp;

system("pause");

return 0;

執行結果:

自定義執行緒池

有些時候 jdk自帶的cachedthreadpool fixedthreadpool等執行緒池完成不了我們業務的需求時 可以用threadpoolexecutorg構造自定義的執行緒池。public class usethreadpoolexecutor1 這段 會首先執行任務1,然後把2 3 4...

自定義執行緒池

建立執行緒池方法 儘管executors提供了四種執行緒池建立的方式,但為了實現某些特定的需求,可以自己建立執行緒池。如在阿里的程式設計規範使用executors建立執行緒時,一般會報錯,並提示以下資訊 執行緒池不允許使用executors去建立,而是通過threadpoolexecutor的方式,...

自定義執行緒池

自定義執行緒池建立api 執行緒池建立通過juc的介面 executor 實現,平時我們使用其實現類 threadpoolexecutor 實現自定義執行緒池。常用建構函式 public threadpoolexecutor int corepoolsize,int maximumpoolsize,...