Read/WriteFile и управление памятью

Тема в разделе "WASM.X64", создана пользователем Mikl___, 30 дек 2024.

  1. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    894
    Можно свои написать на основе обычных:
    Код (C):
    1. PVOID CMemory::AlignedAlloc(SIZE_T sz, UINT nAlign) {
    2.     ULONG_PTR pRet = (ULONG_PTR)CoTaskMemAlloc(sz + nAlign);
    3.     ULONG_PTR pOfst = ((pRet + nAlign) & -((INT)nAlign)) - pRet;
    4.  
    5.     pRet += pOfst;
    6.     *((PBYTE)pRet - 1) = (BYTE)pOfst;
    7.  
    8.     return (PVOID)pRet;
    9.  
    10. }
    11.  
    12. VOID CMemory::AlignedFree(PVOID pv) {
    13.     CoTaskMemFree((PVOID)(((ULONG_PTR)pv) - *(((PBYTE)pv) - 1)));
    14. }
    15.  
     
  2. Intro

    Intro Well-Known Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    1.692
    В строке 28 надо заменить код на: _aligned_free(vec._Myfirst)
    Впопыхах забыл поменять деструктор. А вообще хорошо бы сделать макрос по типу работы шаблона С++. В место структуры xr_vector, генерируется например так: xr_vector@name_class. Тогда можно избавиться от _Mysizeclass, да ещё бы макрос быстрого деления бы разработать, чтобы быстро вычислять size контейнера.