Сделал себе текстовый редактор на ричэдите, там эдитстримы всякие ..как положено. Когда открывается окно программы занимаемая память - 2.9 метра, открываю файл 500 кило - подскакивает до 8 метров. Отчётливо помню, что когда только сделал его - цифры были в 2 раза меньше, чего это я нахимичил? Но интересно - сворачиваю окно - разворачиваю память с 8 м умешается до 0,8 м. и потом по мере скроллинга немного увеличивается ... Что посоветуют уважаемые гуру? Дело конечно не в количестве занимаемой памяти , а в самом принципе - где-то что-то не в порядке? Диалог открытия вроде обычный Код (Text): invoke CreateFile, addr FileName,GENERIC_WRITE,FILE_SHARE_READ, NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0 mov hFile,eax mov editstream.dwCookie,eax mov editstream.pfnCallback,offset StreamOutProc invoke SendMessage,hwndRichEdit,EM_STREAMOUT,SF_TEXT,addr editstream invoke SendMessage,hwndRichEdit,EM_SETMODIFY,FALSE,0 invoke CloseHandle,hFile invoke SetWindowText,hwndRichEdit,0 mov FileOpened,FALSE invoke RtlZeroMemory,addr FileName,sizeof FileName invoke RtlZeroMemory,addr ofn,sizeof ofn mov ofn.lStructSize,sizeof ofn push hWnd pop ofn.hwndOwner push hInstance pop ofn.hInstance mov ofn.lpstrFilter,offset FilterString mov ofn.lpstrFile,offset FileName mov byte ptr [FileName],0 mov ofn.nMaxFile,sizeof FileName mov ofn.Flags,OFN_FILEMUSTEXIST or OFN_HIDEREADONLY or OFN_PATHMUSTEXIST invoke GetOpenFileName,addr ofn .if eax==TRUE invoke CreateFile, addr FileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 .if eax!=INVALID_HANDLE_VALUE mov hFile,eax mov editstream.dwCookie,eax mov editstream.pfnCallback,offset StreamInProc invoke SendMessage,hwndRichEdit,EM_STREAMIN,SF_TEXT,addr editstream invoke SendMessage,hwndRichEdit,EM_SETMODIFY,FALSE,0 invoke CloseHandle,hFile .else invoke MessageBox,hWnd,addr OpenFileFail,addr AppName,MB_OK or MB_ICONERROR .endif .endif