Fehler mit dynamischem Bool-array
-
Hacker schrieb:
Ich hab doch gesagt, in der Laufzeit stürzt das Programm ja ab!
Was wiederum impliziert, dass es zuerst kompiliert wurde und demnach kompilierbar ist. Du musst zwischen Compiler- und Laufzeitfehler unterscheiden.
w={false};Das tut niemals, was du vorhast. Das wäre so nicht einmal erlaubt. Was dein Compiler wahrscheinlich tut, ist das als
w=NULL;zu interpretieren.Aber warum gehst du nicht mit dem Debugger durch?
Und irgendwie habe ich das Gefühl, dass
NKZPundNKZEMakros sind. Mach Funktionen daraus!
-
Nexus schrieb:
Und irgendwie habe ich das Gefühl, dass
NKZPundNKZEMakros sind. Mach Funktionen daraus!Es sind Funktionen, dein Gefühl hat dich belogen.
Und Danke, du hattest recht. Ich hab das Array jetzt statisch deklariert, und das Programm kompiliert wunderbar.
-
Was erwartest du von Zeile 3?
Edit:
Zu spät.
-
Statt
w={false};einfach
std::memset(w, 0, NKZE(a) + 1);
-
Hacker schrieb:
Es sind Funktionen, dein Gefühl hat dich belogen.
Okay, dann ist die Benennung etwas gewöhnungsbedürftig.
Aber viel wichtiger, hast du auch den anderen Teil meines Beitrags gesehen?
-
Hacker schrieb:
Es sind Funktionen, dein Gefühl hat dich belogen.
Dann solltest du deine Funktionen ordentlich nennen.
-
Gibt's kein calloc() für C++? Na ja gut, es gibt ja auch kein realloc().
@TE
Was spricht gegen std::vector?
-
EOutOfResources schrieb:
Statt
w={false};einfach
std::memset(w, 0, NKZE(a) + 1);Warum nicht
bool* w = new bool[NKZE(a)+1]();oder gleich
std::vector<bool> w(NKZE(a)+1);Ist zwar die Template-Spezialisierung, aber sollte im Normalfall okay sein.
-
Statt
std::memset(w, 0, NKZE(a) + 1);einfach
bool* w=new bool[NKZE(a)+1]();
-
*w={true};Ist c++0x
Welchen Compiler verwendet ihr?
Ich hab gcc 4.6.1 -std=gnu++0x
Bei mir geht folgendes Problemlosbool *w=new bool[10]; *w={true}; w[1]=true;