Tag: delete-operator
In der Programmiersprache C++ der operator delete ruft den Destruktor des gegebenen argument auf und gibt Speicher von new zurück auf den Haufen.
3
Antworten
Arbeite ich an einem Speicher-pool/memory allocator Umsetzung und ich bin Einstellung, die Sie in einem Herrenhaus, wo nur eine spezielle "Client -" Objekt Typ kann zeichnen aus dem pool.Der client kann entweder gebaut werden, die direkt auf
4
Antworten
Studiere ich C++ auf meine eigene Zeit, und schreiben Sie eine verknüpfte Liste, um zu versuchen und erhalten Sie den Dreh. Ich bin besorgt über die Art und Weise habe ich um das Objekt zu löschen. Es
2
Antworten
int main() { char* a=new char[20]; cin>>a; cout<<" character at 7-th position."<<a[6]; delete a+4; cout<<a[0]; return 0; } Eingang: 1234567894567 Ausgabe: character at 7-th position.6 *** glibc detected *** ./test free() invalid pointer:.... Nun habe ich 3
3
Antworten
Den Zweck des Programms, an dem ich arbeite, ist das erstellen einer Klasse zum "verbessern" der Standard-Ganzzahl-array-Daten Typ durch die Simulation eine dynamische array von Zeigern. Ich laufen in Fehler beim löschen von Zeigern und arrays von
4
Antworten
Ich habe ein array von Zeigern auf andere Objekte, die als Comparable* array (innerhalb einer Vorlage für eine Klasse). Ich verstehe, dass delete löscht den Speicher verwiesen, die durch einen Zeiger, und das delete plant den
2
Antworten
Löschen und ein array von Elementen verwenden wir delete. Ist es möglich, löschen Sie den Zeiger so, wie ich bin zu tun da unten? ClassA* object = new ClassA(); ClassA* pointer1 = object; ClassA* object2 = new
4
Antworten
Brauche ich zum erstellen von Zeigern von Instanzen einer Klasse sind, und das Programm nicht weiß, bei der Kompilierung, wie viele Zeiger werde ich erstellen. Für die Löschung, ich erwäge das speichern der Zeiger in einem Vektor,
6
Antworten
#include <queue> using namespace std; class Test{ int *myArray; public: Test(){ myArray = new int[10]; } ~Test(){ delete myArray; } }; int main(){ queue<Test> q Test t; q.push(t); } Nachdem ich diesen starte, bekomme ich eine runtime
11
Antworten
Ich habe eine class A verwendet einen heap-Speicher-Zuweisung für eines seiner Felder. Klasse A instanziiert und gespeichert, als ein Zeiger-Feld in eine andere Klasse (class B. Wenn ich fertig bin mit einem Objekt der Klasse B, ich
3
Antworten
Gibt es etwas falsch beim löschen eines Objekts, wie dies in C++? MyCls* c = new MyCls(); void* p = (void*)c; delete (MyCls*)p; Ich glaube das nicht. Casting einen Zeiger auf void * und dann zurück zu
4
Antworten
In meinem C++ - Programm, erstelle ich Objekte in einer Funktion mit neuen. Diese Objekte sind eingefügt in eine Reihe. Wenn ich möchte, dass das entfernen von Objekten aus dem set, ich verwende einen iterator in einer
6
Antworten
Als jemand, der nie behandelt Freigabe von Speicher und so weiter, bekam ich die Aufgabe zum erstellen eines dynamischen Arrays von struct und Funktionen erstellen, hinzufügen oder löschen von array-Elementen. Beim löschen habe ich den Speicher frei,
5
Antworten
Ich habe ein Programm geschrieben, das ordnet ein neues Objekt der Klasse T, wie diese: T* obj = new T(tid); wo das tid ist ein int Woanders in meinem code versuche ich das Objekt freigeben, das hab
7
Antworten
Ist es sicher zu löschen, einen NULL-Zeiger? Und es ist eine gute coding-Stil? Good practice ist C++ Programme zu schreiben, ohne einen einzigen Anruf zu delete. RAII statt. Das heißt, verwenden Sie std::vector<T> v(100); statt T* p
2
Antworten
malla = new Celula**[n + 2]; for(int i = 0 ; i < n + 2 ; ++i){ malla[i] = new Celula*[m + 2]; for(int j = 0 ; j < m + 2 ; ++j){ malla[i][j]
5
Antworten
Warum C++ nicht die Platzierung löschen direkt entspricht die Platzierung neu, d.h. ruft den Destruktor aufruft und entsprechende Platzierung delete-operator? Beispiel: MyType *p = new(arena) MyType; ... //current technique p->~MyType(); operator delete(p, arena); //proposed technique delete(arena) p;
5
Antworten
Ich habe eine basic Frage bezüglich der const-Pointer. Ich bin mir nicht erlaubt zu nennen, alle nicht-const-member-Funktionen mit einem const-Zeiger. Allerdings bin ich mir erlaubt, dies zu tun, der auf einen const-Zeiger: delete p; Dies ruft den
3
Antworten
Ich meine, wenn ich einige Klasse wie: class A{ int* pi; }; *A pa; wenn ich rufe delete pa wird pi gelöscht werden? Es wird sein, wenn Sie den code, es zu werden. Es wird nicht sein,
11
Antworten
Ignorieren Programmierung Stil und design, ist es "sicher" zu nennen, delete auf eine variable auf dem Stapel reserviert? Beispiel: int nAmount; delete &nAmount; oder class sample { public: sample(); ~sample() { delete &nAmount;} int nAmount; } Warum
10
Antworten
Ist es erlaubt delete this; wenn der delete-Anweisung ist die Letzte Anweisung, die ausgeführt werden, auf diese Instanz der Klasse? Natürlich bin ich sicher, dass das Objekt, vertreten durch die this-Zeiger ist newly erstellt. Ich denke über
6
Antworten
Ich erhalte eine Fehlermeldung - heap-Beschädigung kann nicht herausfinden, warum. Mein base : h: class Base { public : Base(char* baseName, char* cityName); virtual ~Base(); list<Vehicle*>::const_iterator GetEndList(); void PrintAllVehicles(ofstream &ResultFile) const; char* GetBaseName() const; char* GetLocation() const;
6
Antworten
Habe ich eine manager-Klasse hält ein Vektor von Zeigern auf eine virtuelle Basisklasse in eine Reihe von untergeordneten Klassen, die dort aufbewahrt werden. Im Destruktor dieser Klasse manager Klasse, ich möchte es, um den Zyklus durch alle
1
Antworten
Ich habe immer heap corruption Fehler auf delete - Anweisung. Projekt gearbeitet wird in VC++ 2008, seine Forderung (also bitte nicht scharf). Ganze Bauprozess ist die Arbeit OK, aber zur Laufzeit bekomme ich error: (prs_2013 ist
4
Antworten
Ich weiß, die Kostenlose operation in C ist zu sagen, der compiler diese bestimmten Speicherblock frei ist für den compiler zu verwenden, für die weitere Zuordnung, aber der Speicher wird nicht freigegeben. Was über das löschen in
6
Antworten
Frage ich mich, was will hapen, wenn ich versuche, eine delete auf einen Zeiger, der ist schon gelöscht, oder kann nicht zugeordnet worden ? Ich habe gelesen zwei Dinge : Erstens, dass delete Betreiber tun einige checkings
5
Antworten
Okay die Vorherige Frage wurde beantwortet, klar, aber ich fand heraus, ein weiteres problem. Was ist, wenn ich tun: char *test(int ran){ char *ret = new char[ran]; //process... return ret; } Und führen es dann aus: for(int
5
Antworten
Was ist das äquivalent zu new/delete in C++ in C? Oder es ist das gleiche in C/C++? InformationsquelleAutor der Frage httpinterpret | 2010-05-15
6
Antworten
#include <queue> using namespace std; class Test{ int *myArray; public: Test(){ myArray = new int[10]; } ~Test(){ delete myArray; } }; int main(){ queue<Test> q Test t; q.push(t); } Nachdem ich diesen starte, bekomme ich eine runtime
6
Antworten
Tut delete awo a ist dynamisch zugewiesen array von Zeigern, führen delete für jeden Zeiger im array? Ich nehme an, es führt Destruktor für arrays mit Benutzer-definierte Klassen, aber was passiert mit den Zeigern? InformationsquelleAutor der Frage
8
Antworten
Ich habe geforscht, und nichts, was relevant ist, so kam ich hier. Ich versuche, um Speicherverluste zu vermeiden, so Frage ich mich: Sagen, ich habe Klasse MyClass mit den ints a und bund ein int array cgefüllt
10
Antworten
Suchte ich StackOverflow konnte Sie aber nicht finden die Antwort auf diese Frage. Angenommen ich habe eine std::vector<Day *> vector_day - das ist ein Vektor von Zeigern auf Day Objekt. Jetzt habe ich push_back zu vector_day viele
11
Antworten
Ignorieren Programmierung Stil und design, ist es "sicher" zu nennen, delete auf eine variable auf dem Stapel reserviert? Beispiel: int nAmount; delete &nAmount; oder class sample { public: sample(); ~sample() { delete &nAmount;} int nAmount; } InformationsquelleAutor
6
Antworten
Mache ich ein kleines memory-leak-finder in mein Programm, aber meine Art der überlastung und löschen (und auch new und delete) scheint nicht, etwas zu tun. void* operator new (unsigned int size, const char* filename, int line) {
7
Antworten
Warum sollte würde ein ersetzen der Standard-operator new und delete mit einem benutzerdefinierten new und delete Betreiber? Dies ist in Fortsetzung der Überladen von new und delete in die ungemein erhellende C++ FAQ: Operator überladen. Einen Nachtrag-Eintrag
3
Antworten
int *p=(int * )malloc(sizeof(int)); delete p; Wenn wir Speicher reservieren mit malloc, dann sollten wir es freigeben mit free und wenn wir uns gerne mit neuen in C++, dann sollten wir es freigeben mit delete. Aber wenn
5
Antworten
Warum C++ nicht die Platzierung löschen direkt entspricht die Platzierung neu, d.h. ruft den Destruktor aufruft und entsprechende Platzierung delete-operator? Beispiel: MyType *p = new(arena) MyType; ... //current technique p->~MyType(); operator delete(p, arena); //proposed technique delete(arena) p;
8
Antworten
Cosider folgenden code: class Foo { Monster* monsters[6]; Foo() { for (int i = 0; i < 6; i++) { monsters[i] = new Monster(); } } virtual ~Foo(); } Was ist der richtige Destruktor? : Foo::~Foo() {
4
Antworten
Wie kann ich realloc in C++? Es scheint, fehlt die Sprache - es ist new und delete aber nicht resize! Ich es brauchen, weil, wie mein Programm liest mehr Daten brauche ich, um den Puffer neu zuordnen,
10
Antworten
Sehe ich oft legacy-code-Kontrolle für NULL vor dem löschen ein Zeiger, ähnlich, if (NULL != pSomeObject) { delete pSomeObject; pSomeObject = NULL; } Gibt es irgendeinen Grund für die überprüfung auf eine NULL Zeiger vor dem löschen?
5
Antworten
Ich habe eine basic Frage bezüglich der const-Pointer. Ich bin mir nicht erlaubt zu nennen, alle nicht-const-member-Funktionen mit einem const-Zeiger. Allerdings bin ich mir erlaubt, dies zu tun, der auf einen const-Zeiger: delete p; Dies ruft den
2
Antworten
In c++03 es ist ziemlich klar, dass das löschen eines null-Zeigers hat keine Wirkung. In der Tat, es ist ausdrücklich in §5.3.5/2: In der einen alternative, wenn der Wert des Operanden von delete ist der null-pointer, der
4
Antworten
Wie soll ich das schreiben von ISO-C++ - standard-konform benutzerdefinierte new und delete Betreiber? Dies ist in Fortsetzung der Überladen von new und delete in die ungemein erhellende C++ FAQ, Operator überladenund Ihr follow-up, Warum sollte man
6
Antworten
Kontext: ich versuche, wickeln Sie meinen Kopf herum, Zeiger, wir sahen Sie vor ein paar Wochen in der Schule und beim üben heute lief ich in eine dumme? Frage, kann es super einfach für Sie, aber ich
15
Antworten
Okay, ich denke wir sind uns alle einig, dass das, was geschieht mit dem folgenden code ist nicht definiert, je nachdem, was übergeben wird, void deleteForMe(int* pointer) { delete pointer; } Die Zeiger werden könnte, alle möglichen
7
Antworten
Ist es sicher zu löschen, einen NULL-Zeiger? Und es ist eine gute coding-Stil? InformationsquelleAutor der Frage qiuxiafei | 2010-11-16
12
Antworten
Ich mich immer gefragt, warum die automatische Einstellung der Zeiger auf NULL nach löschen ist nicht Teil des Standards. Wenn dies bekommt aufgepasst dann viele Abstürze aufgrund eines ungültigen Zeiger würde nicht auftreten. Aber gesagt haben, dass
9
Antworten
Ich habe eine hoffentlich einfache Frage - wie wird man freier Speicher, der zugeordnet wurde, wird im try-block, wenn die Ausnahme Auftritt? Betrachten Sie den folgenden code: try { char *heap = new char [50]; //let exception
4
Antworten
Laut N3290 std::unique_ptr akzeptiert ein deleter argument im Konstruktor. Aber ich kann nicht, dass die Arbeit mit Visual C++ 10.0 oder MinGW g++ 4.4.1 in Windows, noch mit g++ 4.6.1 in Ubuntu. Ich daher Angst, dass mein
8
Antworten
class my_class { ... my_class(my_class const &) = delete; ... }; Was bedeutet = delete bedeuten in diesem Zusammenhang? Gibt es irgendwelche anderen "Modifikatoren" (andere als = 0 und = delete)? InformationsquelleAutor der Frage Pat O'Keefe |
5
Antworten
Habe ich zugewiesen und das array von Objekten Objects *array = new Objects[N]; Wie soll ich das löschen dieses array? Nur delete array; oder mit der Iteration über den array-Elemente? for(int i=0;i<N;i++) delete array[i]; delete; Dank UPDATE: