Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 |
int *pointer = new int; delete pointer; pointer = NULL; |
Administrator
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
class ShareInt { public: void chewOnInt (int* external_pointer) { _chew_pointer = external_pointer; } private: int* _chew_pointer; }; void foo (ShareInt* parasite) { int* int_ptr = new int (10); parasite->chewOnInt (int_ptr); delete int_ptr; int_ptr = 0; } |
Zitat von »"rklaffehn"«
C-/C++-Quelltext
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 class ShareInt { public: void chewOnInt (int* external_pointer) { _chew_pointer = external_pointer; } private: int* _chew_pointer; }; void foo (ShareInt* parasite) { int* int_ptr = new int (10); parasite->chewOnInt (int_ptr); delete int_ptr; int_ptr = 0; // <--- }
C-/C++-Quelltext |
|
1 2 3 4 5 |
// entweder *int_ptr = 0; // oder int_ptr = NULL; // oder irre ich mich jetz .. |
C-/C++-Quelltext |
|
1 |
#define NULL 0
|
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
#include <iostream> #include <boost/shared_ptr.hpp> class foo { public: typedef boost::shared_ptr< int > ptr_type; private: ptr_type ptr; public: void setPointee( const ptr_type& p ) { ptr = p; } void doSomething() const { std::cout << "Value: " << *ptr << std::endl; } }; void foobar( foo& dest ) { foo::ptr_type p( new int( 10 ) ); dest.setPointee( p ); } // p wird korrekt geloescht da aber foo::ptr noch auf den Speicher zeigt wird dieser nicht freigegeben int main() { foo bar; foobar( bar ); bar.doSomething(); // Jep, klappt. Der Speicher existiert noch! } // bar wird geloescht und damit auch der Speicher freigegeben, da keine Instanz mehr auf den Speicher zeigt |
Werbeanzeige