Можно свои написать на основе обычных: Код (C): PVOID CMemory::AlignedAlloc(SIZE_T sz, UINT nAlign) { ULONG_PTR pRet = (ULONG_PTR)CoTaskMemAlloc(sz + nAlign); ULONG_PTR pOfst = ((pRet + nAlign) & -((INT)nAlign)) - pRet; pRet += pOfst; *((PBYTE)pRet - 1) = (BYTE)pOfst; return (PVOID)pRet; } VOID CMemory::AlignedFree(PVOID pv) { CoTaskMemFree((PVOID)(((ULONG_PTR)pv) - *(((PBYTE)pv) - 1))); }
В строке 28 надо заменить код на: _aligned_free(vec._Myfirst) Впопыхах забыл поменять деструктор. А вообще хорошо бы сделать макрос по типу работы шаблона С++. В место структуры xr_vector, генерируется например так: xr_vector@name_class. Тогда можно избавиться от _Mysizeclass, да ещё бы макрос быстрого деления бы разработать, чтобы быстро вычислять size контейнера.
Mikl___, функции ReadFileScatter и WriteFileGather можешь описать как их использовать ? если не сложно --- Сообщение объединено, 26 апр 2026 в 17:25 --- не обязательно, можно и так сделать Код (ASM): option casemap:none include masm64rt.inc include msvcrt.inc includelib win64\lib64\kernel32.lib includelib win64\lib64\user32.lib includelib win64\lib64\shell32.lib includelib win64\lib64\gdiplus.lib includelib win64\lib64\gdi32.lib includelib win64\lib64\msvcrt.lib public main .data object_target db 'shlack.bin',0 buffer_1 db 512 dup (0) buffer_2 db 512 dup (0) overlap OVERLAPPED <> io_status qword ? .code main: push rbp sub rsp,56 invoke CreateFileA,addr object_target,GENERIC_READ,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL OR FILE_FLAG_OVERLAPPED,0 mov [overlap._Offset],1b00h invoke ReadFile,rax,addr buffer_1,1024,addr io_status,addr overlap invoke ExitProcess,0 end