martinr@ima.isc.com (Martin Romano) (03/19/91)
Is there a limit on the size of a memory block allocated by GlobalAlloc() *other* than: 1) 1MB in standard mode 2) 64MB in 386 enhanced mode 3) available virtual memory When I attempt to allocate an 18MB block*, GlobalAlloc() returns a non-zero handle, but appears to allocate a block slightly smaller than 16MB. For example: HANDLE hBig = GlobalAlloc(GMEM_MOVEABLE, EighteenMegs); char _huge *hpBig = (char _huge *)GlobalLock(hBig); ... dwSize = GlobalSize(hBig); /* dwSize < 16MB !!! */; for (i = 0; i < EighteenMegs; i++) *hpBig++ = 'X'; /* Dies around 16MB past start of block. */ My apologies if this is a well-known/much-discussed problem. * My machine is a Compaq 386/25 with 8MB+640KB memory, ~31MB swap file, with Windows running in enhanced mode. -- Martin Romano Interactive Systems, Cambridge MA (617)661-7474 x209 {encore, harvard, spdcc, think}!ima!martinr martinr@ima.ima.isc.com