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:

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);
}
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
HeapAlloc(
    __in HANDLE hHeap,
    __in DWORD dwFlags,
    __in SIZE_T dwBytes
    );
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.

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.