malloc/_int_free() führt unter Linux zu einem Segmentation Fault,
Wenn du erklärst, was genau du mit _int_free() meinst, kann man dabei vielleicht helfen.
Konzeptionell funktioniert malloc() überall gleich, auch wenn die Implementierung sehr unterschiedlich sein kann. Letzteres sollte dich als Programmierer aber in der Regel nicht interessieren. Es ist
immer ein Fehler, Speicher, der schon freigegeben wurde, noch zu benutzen. Je nach Implementierung und äußerer Umstände kann das direkt auffallen oder eben nicht, aber so oder so ist das Programm falsch, es enthält "undefined behavior".
Um solche Fehler besser zu finden eignet sich Valgrind, oder auf Windows, DrMemory. Übrigens ist mir persönlich aufgefallen, dass Windows anscheinend besonders "aggressiv" Speicher freigibt bzw wiederverwendet -- entsprechende Bugs werden auf Windows sehr häufig direkt sichtbar, während das Programm auf Linux (und auch auf FreeBSD) öfter mal noch zu funktionieren scheint.
edit: mein beobachtetes Verhalten bezieht sich auf mit MinGW compilierte Programme, die die alte MSVCRT.DLL als standard C library linken. Gut möglich, dass das mit anderen Libraries (z.B. neueren Versionen von msvcrt, die mit Visual Studio verteilt werden) schon wieder anders aussieht. In der Regel arbeiten malloc() Implementierungen nämlich so, dass sie größere Bereiche vom OS anfordern (z.B. mittels mmap()) und diese dann selbst verwalten. Wie schnell dann ein Speicherbereich anderweitig verwendet wird, oder komplett an das OS zurückgegeben wird, hängt von der Strategie in der C Library ab. Deshalb kann es leicht passieren, dass ein fehlerhaftes Programm scheinbar korrekt läuft. Wenn man da unsicher ist, sollte man
immer ein debugging tool nutzen, das alle Speicherzugriffe, -anforderungen und -freigaben trackt, siehe oben
