2011-10-25 4 views
5

Sto benchmarking/ottimizzazione di un'applicazione C++ lenta, e nel prendere alcuni stackshots ho scoperto che la build di rilascio della mia applicazione utilizza l'heap di debug, come parte dello stack tracce trovate indicherebbero:VC++ su Visual Studio 2010: build di versioni utilizzando l'heap di debug

ntdll.dll!string "Enabling heap debug options\n"() + 0x11056 bytes 

questa è un'applicazione a 64 bit in esecuzione su Windows 7. vedo due o tre altre lamentele su questo problema in esattamente lo stesso ambiente online, ma senza tutte le risposte.

Qualcuno ha la minima idea del perché Windows o Visual Studio utilizzino l'heap di debug per un progetto C++ di build release?

+0

+1 per utilizzare gli stackshot. –

risposta

6

The debug heap is used when a program is run under debugger (i profiler spesso si manifestano come debugger). Per bypassarlo, il programma dovrebbe essere avviato senza eseguire il debug, quindi il debugger dovrebbe essere collegato a un processo in esecuzione.

+0

Grazie. Non so come non l'ho mai saputo, anche se ammetto che non vedo il vantaggio nel forzare un'applicazione di rilascio per usare l'heap di debug - non è il punto di rilascio per imitare il più fedelmente possibile il mondo reale scenari !? –

+0

@Mahmoud Al-Qudsi: Questa cosa in realtà non è così conosciuta, anch'io sono stato sorpreso di saperlo. Bene, l'heap di debug facilita il debugging e il debugger facilita il debug quindi credo che abbiano deciso di combinarlo. Inoltre non è fatto da Visual Studio o qualcosa del genere - è fatto da Windows. – sharptooth