Class CResourceString



  • Aziz schrieb:

    Ja aber wenn new keinen Speicher reservieren konnte, gibt der dann nicht NULL zurück?

    So, wie es da steht, nicht. Und selbst wenn: Du prüfst das nicht. In diesem Falle müsstest Du m_iLength auf 0 zurücksetzen.



  • So, wie es da steht, nicht. Und selbst wenn: Du prüfst das nicht. In diesem Falle müsstest Du m_iLength auf 0 zurücksetzen.

    Wieso nicht? Ein Zitat aus der MSDN:

    If there is insufficient memory for the allocation request, by default operator new returns NULL.

    Wenn kein Speicher vorhanden ist sollte immer NULL zurückgegeben werden. Die Sache mit m_iLength kann man ja noch erledigen...

    @"."

    Schreib doch besser eine Funktionen die einen std::string zurückgibt. Das fände ich sinnvoller als diese Klasse.

    Ich denke das ist unnötig, zumindest hinsichtlich meiner Bedürfnisse. Wenn alles bei den elementaren Funktionen und Datentypen bleibt ist es auch schneller. Gibt es außerdem eine Unicode version von string?



  • Bei mir steht das anders:

    The default behavior of a new handler is to throw an object of type bad_alloc.



  • Da steht "a new handler" und nicht "the new operator". Man kann mittels der _set_new_handler Funktion einen Handler festlegen, der aufgerufen wird wenn der new Operator beim Allozieren von Speicher versagt...



  • Ok, ich geb's auf. Das Standard-Verhalten ist jedenfalls anders als von Dir gewünscht.



  • Ich würd' gern wissen was dich da so sicher macht..

    Einerseits sagt die MSDN (die Version die ich installiert hab) klar aus, dass der new Operator sich auf diese Weise verhält, und auf der anderen Seite drückt sich die MSDN im Internet etwas unklar darüber aus..



  • Aziz schrieb:

    Ich würd' gern wissen was dich da so sicher macht..

    Soweit ich weiß, soll laut Standard im Fehlerfall eine Exception geschmissen werden. Meine Umgebung sorgt per default dafür, eben so, wie es in der zugehörigen Dokumentation steht.

    Wenn Du da irgendetwas altes installiert hast, kann das auch durchaus anders aussehen. Allerdings sollte das eher als Bug durchgehen.

    Notfalls kannst Du im C++ - Forum nachfragen. Die können Dir das genaue Verhalten von new besser erkären als ich es kann. Schliesslich bin ich, wie Eingangs erwähnt, eher der Typ ohne ++.



  • Hmm, mit dem C++ Standard kenn ich mich minimal aus. Ich verwende die Visual Studio SP 5.0 Entwicklungsumgebung; welche verwendest du?

    Ich werd vielleicht im C++ Forum nachfragen wegen der "new" Sache..



  • VC6? Dann hast Du natürlich recht, bei diesem alten Ding war das noch so. Ich verwende die aktuelle Version 7.1, die verhält sich richtig.



  • -King- schrieb:

    VC6? Dann hast Du natürlich recht, bei diesem alten Ding war das noch so. Ich verwende die aktuelle Version 7.1, die verhält sich richtig.

    😃

    Ich hab da was Interessantes gefunden: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang/html/_pluslang_the_new_and_delete_operators.asp

    Man kann dieses Verhalten anscheinend auch im VC6 erzielen.


Anmelden zum Antworten