| 366 | #endif |
| 367 | |
| 368 | int _mi_prim_commit(void* addr, size_t size, bool* is_zero) { |
| 369 | *is_zero = false; |
| 370 | /* |
| 371 | // zero'ing only happens on an initial commit... but checking upfront seems expensive.. |
| 372 | _MEMORY_BASIC_INFORMATION meminfo; _mi_memzero_var(meminfo); |
| 373 | if (VirtualQuery(addr, &meminfo, size) > 0) { |
| 374 | if ((meminfo.State & MEM_COMMIT) == 0) { |
| 375 | *is_zero = true; |
| 376 | } |
| 377 | } |
| 378 | */ |
| 379 | // commit |
| 380 | void* p = VirtualAlloc(addr, size, MEM_COMMIT, PAGE_READWRITE); |
| 381 | if (p == NULL) return (int)GetLastError(); |
| 382 | return 0; |
| 383 | } |
| 384 | |
| 385 | int _mi_prim_decommit(void* addr, size_t size, bool* needs_recommit) { |
| 386 | BOOL ok = VirtualFree(addr, size, MEM_DECOMMIT); |
nothing calls this directly
no outgoing calls
no test coverage detected