によって割り当てられたスタック領域CreateThread
が の使用を妨げる可能性はありVirtualAlloc
ますか? スタック領域の割り当てが許可されている場所を正確に説明している議論やドキュメントが見つかりません...
以下は、私の質問をより正確に示しています。
uint8_t *baseA = (uint8_t*)VirtualAlloc(NULL,1,MEM_RESERVE,PAGE_NOACCESS);
// Create a thread with the default stack size
HANDLE hThread = CreateThread(NULL,0,SomeThreadProc,NULL,NULL,NULL);
// Possibly create even more threads here.
// Can this ever fail in the absence of other allocators? It doesn't here...
uint8_t *baseB = (uint8_t*)VirtualAlloc(NULL,1,MEM_RESERVE,PAGE_NOACCESS);
// Furthermore, in this test, baseB-baseA == 65536 (unless the debugger did something),
// so nothing appeared between baseA and baseB... not even enough space for the
// full 64kb of wastage, as baseA points to 4096 bytes by itself
実際に の類似物を使用している場合VirtualAlloc
、特定のプロセスで Windows がスタック領域を割り当てる方法を変更する方法はありますか?