Thread-Sicherheit mit heap-Speicher reserviert

Las ich dies: http://en.wikipedia.org/wiki/Thread_safety

Ist die folgende Funktion thread-sicher?

void foo(int y){
    int * x = new int[50];
    /*...do some stuff with the allocated memory...*/
    delete [] x;
}

In dem Artikel heißt es, dass werden, um thread-sicher können Sie nur Variablen vom stack. Wirklich? Warum? Würde nicht nachfolgende Aufrufe der obigen Funktion allocate memory anderswo?

Edit: Ah. Sieht aus wie ich falsch verstanden, dieser Teil des Artikels:

Ein Unterprogramm ist reentrant, und somit thread-sicher, wenn

  • die einzigen Variablen, die Sie verwendet sind aus dem Stapel

(Ich nahm es bedeuten,

Ein Unterprogramm ist reentrant, und somit thread-sicher, wenn und nur, wenn

  • die einzigen Variablen, die Sie verwendet sind aus dem Stapel

die nach den Antworten unten, ist nicht der Fall)

  • Verwenden delete[] für arrays nicht delete
  • Woops - vielen Dank. Ich habe den array-Teil, nachdem ich hatte bereits geschrieben, die Funktion, bei der es ganz klar, dass ich dynamisch reservieren von Speicher, aber vergaß hinzuzufügen, die []'s. +1 🙂
  • Es ist erstaunlich zu sehen, die Verbreitung der Nutzung von wikipedia als Referenz für Programmierung Konzepte 🙂
InformationsquelleAutor Cam | 2010-05-16
Schreibe einen Kommentar