malloc ist nicht garantiert, 0'ed Speicher zurück zu geben. Das herkömmliche Wissen ist nicht nur das, sondern dass der Inhalt des Speichers malloc Rückgaben tatsächlich non-deterministic sind, z.B. openssl used them for extra randomness.Warum ist Malloc wirklich nicht deterministisch? (Linux/Unix)
aber soweit ich weiß, ist malloc oben auf brk gebaut/sbrk, die "Rückkehr" 0'ed Speicher tun. Ich kann sehen, warum der Inhalt von was malloc zurückgibt möglicherweise, z. von zuvor kostenlos 'd Speicher, aber warum würden sie non-deterministic in "normalen" Singlethread-Software sein?
- ist die konventionelle Weisheit wirklich wahr (vorausgesetzt, die gleiche binäre und Bibliotheken)
- Wenn ja, warum?
bearbeiten Mehrere Menschen zu erklären, warum antwortet der Speicher nicht 0 sein kann, die ich bereits in der Frage oben erläutert. Ich frage, warum das Programm, das den Inhalt von malloc zurückgibt, nichtdeterministisch sein kann, d. H. Warum es jedes Mal, wenn es ausgeführt wird, ein anderes Verhalten haben kann (unter der Annahme derselben Binärdatei und Bibliotheken). Nicht-deterministisches Verhalten wird von Nicht-Nullen nicht impliziert. Um es anders auszudrücken: Warum könnte es bei jeder Ausführung der Binärdatei einen anderen Inhalt haben?
Wenn Sie sehen, warum es manchmal nicht Null sein kann, dann müssen Sie bereits verstehen, warum die Rückkehr im Allgemeinen nicht deterministisch ist. In jedem speziellen Fall scheint es, als würde es immer den Null-Speicher zurückgeben, aber im allgemeinen Sinn kann das nicht garantiert werden. – Chad
Wie hängt der Link mit der Frage zusammen? –
Sie könnten auch sagen, dass C nicht nur für normale Singlethread-Software verwendet wird ... – Mehrdad