Bonjour
j'ai tenté de regarder dans les profondeurs du code de VC2010 ce qui concerne l'allocation dynamique par exemple, quand on fait int*n=new int;
J'ai vu que l'on appelle en fait une fonction qui s'appelle HeapAlloc.
On ne peut pas aller plus loin dans le code, puisque cette fonction se trouve dans la dll kernel32.dll:
On a cependant la déclaration de cette fonction dans winbase.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 __forceinline void * __cdecl _heap_alloc (size_t size) { if (_crtheap == 0) { _FF_MSGBANNER(); /* write run-time error banner */ _NMSG_WRITE(_RT_CRT_NOTINIT); /* write message */ __crtExitProcess(255); /* normally _exit(255) */ } return HeapAlloc(_crtheap, 0, size ? size : 1); }
Je voudrais savoir si ces fonctions sont les fonctions communes à l'ensemble des applications de Windows, et comme le code n'est pas en open source, on ne peut pas y accéder.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 HeapAlloc( __in HANDLE hHeap, __in DWORD dwFlags, __in SIZE_T dwBytes );
Cependant, j'ai trouvé ici quelque chose qui semble très proche.
http://source.winehq.org/source/dlls/ntdll/heap.c#L1623
Est-ce le code windows des fonctions dans les dll?
Cela me semblerait quand même étrange. Serait-ce le code source de Windows?
il semble qu'il y ait le code de toutes les fonctions de la dll concernant l'allocation sur le tas.
Partager