2017-10-14 5 views
0

Ich arbeite an einem Projekt Ich erstellte Funktion, wo ich dynamischen Speicher verwendet und dann Trie in Funktion selbst release. Beim Kompilieren gibt es einen Fehler, da release() nicht deklariert wurde.release() wurde nicht deklariert C++

int * cumprod = (int *) malloc (benachbarte_dim * sizeof (* cumprod));

Freigabe (cumprod);

Dies ist innerhalb der Funktion.

Was ist der Grund dafür?

Antwort

1

Sie suchen nach free() nicht release().

Alternativ kann, da Sie C++ verwenden, könnten Sie stattdessen new/delete verwenden, etwa so:

int *cumprod = new int[neighbood_dim]; 

delete[] cumprod; 
+1

Thanx für die Beantwortung. Was ist der Unterschied zwischen beiden? – Eyshika

+0

'release()' ist keine tatsächliche Funktion, die Sie verwenden können. – frslm

+2

Ihr Beispiel 'std :: unique_ptr' weist einen einzelnen int mit dem Wert' neighbood_dim' zu, nicht ein Array mit so vielen Elementen. Sie können ein dynamisches Array mit 'std :: unique_ptr ' verwalten, aber das bessere Werkzeug dafür ist 'std :: vector '. –

Verwandte Themen