Перегрузка new

Discussion in 'WASM.WIN32' started by Tiro, Sep 1, 2006.

  1. censored

    censored New Member

    Blog Posts:
    0
    может не совсем понимаю, но что мешает сделать так:
    Code (Text):
    1. class A {
    2. public:
    3.   void * __cdecl operator new (size_t size) {
    4.     //implementation here
    5.     return NULL;
    6.   }
    7.   void __cdecl operator delete (void * ptr) {
    8.   }  
    9. };
     
  2. IceStudent

    IceStudent Active Member

    Blog Posts:
    0
    censored
    Дело в том, что так можно подцепить реализацию на каждый объект отдельно или на базовый. Трудность в том, что нужно править объекты, по отдельности, если их вообще можно править (напр., используется библиотека).
     
  3. AsmGuru62

    AsmGuru62 Member

    Blog Posts:
    0
    Аллокация памяти может вызвать перебор уже выделенных блоков, а может и не вызвать - зависит от реаллокаций, освобождения блоков, фрагментации и многого другого. Если перебор происходит, то лучше чтобы он произошёл в меньшем количестве блоков. Поэтому, если каждый документ имеет собственный heap - это будет быстрее, по сравнению с одним heap-ом на все документы. Кроме того, чтобы закрыть документ надо вызвать один HeapDestroy(), вместо освобождения каждого элемента в документе.

    Насчёт STL - да, там не развернешься особо. Но я STL не использую - все векторы, листы, дервья и другие коллекции - всё сделано с нуля. Кстати, STL в дизассемблере: картина не очень впечатляет.