Frage

  

Mögliche Duplizieren:
   Malloc Thread-sicher?

Ich habe gehört, dass glibc malloc () nicht Thread-sicher war, da mehrere Threads eines Prozesses aufrufen malloc () gleichzeitig zu undefinierten Verhalten führen. Und meine Frage ist, ob ein Thread frei () aufruft, wird ein anderer Thread malloc wird () aufgerufen wird, wird diese führen zu undefinierten Verhalten als auch?

War es hilfreich?

Lösung

Wenn Sie mit -pthreads verknüpfen, malloc () wird THREAD in glibc sein.

Ohne dass der Linker keine Verknüpfung mit einem THREAD malloc, die zu undefinierten Verhalten führen wird.

Andere Tipps

Es hängt von Ihrer glibc-Implementierung. Ein einfacher „Mann malloc“ auf Ihrem System könnte man sagen. In der Regel, wenn Sie den Compiler sagen, dass Sie Threads verwendet wird, dann wird sie möglicherweise einen Link in einem Thread sichere Version der C-Laufzeitbibliothek, die eine Thread-sichere malloc ().

Es hängt wirklich von der Speicherzuordner Sie verwenden, aber ich denke, standardmäßig malloc und frei ist nichtablaufinvarianten als sie die Liste der Speicherblöcke in einer statischen Liste halten.

Dies zu Komplikationen führen könnte, wenn Sie malloc'ing und befreit gleichzeitig.

Ich weiß, dass ptmalloc jedoch ist THREAD, so dass Sie, dass stattdessen verwenden können.

Diese Verbindungen waren auch nützlich:

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top