Hello Everybody
As I posted ( Toninho too ) about memProof.exe' report
of unfreed memory pages at appln termination,
here are the investigations.
I used following debugging code:
/* For direct MMAP, use MEM_TOP_DOWN to minimize interference */
static void* win32direct_mmap(size_t size) {
void* ptr = VirtualAlloc(0, size, MEM_RESERVE|MEM_COMMIT|MEM_TOP_DOWN,
PAGE_READWRITE);
OutputDebugString( "--------------------VirtualAllocate win32direct_mmap"
);
return (ptr != 0)? ptr: MFAIL;
}
/* This function supports releasing coalesed segments */
static int win32munmap(void* ptr, size_t size) {
MEMORY_BASIC_INFORMATION minfo;
BOOL bFail;
char* cptr = (char*)ptr; /* NOTE: Harbour fix for MSVC C++ mode compile
error. Also fixed in dlmalloc 2.8.4b. [vszakats] */
while (size) {
if (VirtualQuery(cptr, &minfo, sizeof(minfo)) == 0)
return -1;
if (minfo.BaseAddress != cptr || minfo.AllocationBase != cptr ||
minfo.State != MEM_COMMIT || minfo.RegionSize > size)
return -1;
bFail = (VirtualFree(cptr, 0, MEM_RELEASE) == 0);
if (!bFail)
{
OutputDebugString( "--------------------------------VirtualFree
(VirtualFree(cptr, 0, MEM_RELEASE) == 0);" );
}
else
{
OutputDebugString( "------------------------------------------VirtualFree
failed" );
return -1;
}
cptr += minfo.RegionSize;
size -= minfo.RegionSize;
}
return 0;
}
VirtualAlloc() calls == 88
VistualFree() calls == 61 ( all succeeding )
Uncalled allocations == 27
MemProof's reporting == 23 + one entry of 4 allocns of 4096 bytes.
Just food for the thoughts.
Honestly I do not know what it is and what it should.
But MemProof's report must be considered.
Regards
Pritpal Bedi
--
View this message in context:
http://www.nabble.com/Dlmalloc.c---VirtualAlloc-Free---Test-Results-tp22143106p22143106.html
Sent from the Harbour - Dev mailing list archive at Nabble.com.
_______________________________________________
Harbour mailing list
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour