Größe von Funktionen/Funktionszeigern



  • Hi,

    also ich würde gerne Hashwerte von Funktionen im Speicher berechnen. Für meinen naiven Ansatz bräuchte ich was in der folgenden Richtung:

    void test(){
    	// ...
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	 void (*pfnFunc)();
    	 pfnFunc = test;
    
    	 char *t = (char*)pfnFunc;
    
    	 for(int i = 0; i <= sizeof(pfnFunc); i++){
    		// ...t[i]..
    	 }
    
    	return 0;
    }
    

    Dabei liefert mir "sizeof(pfnFunc)" natürlich nicht das was ich eigentlich brauche.

    Und da ist jetzt schon genau mein Problem. Hat vielleicht jemand einen Tipp wie ich die Größe des belegten Speicherplatzes, der mit pfnFunc referenzierten Funktion ermitteln kann?

    Danke und Grüße
    Fancy



  • Irgendwie bezweifle ich, dass das geht. Schließlich ist zur Compile-Zeit die exakte "Größe" der Funktion noch nicht bekannt, danach oder währenddessen könnten noch Optimierungsvorgänge folgen. Du könntest auch bis zum letzten RET lesen (Opcodes).
    Reicht es nicht, den Funktionszeiger als Hashwert zu verwenden?


Anmelden zum Antworten