probleme mit void pointern
-
Hallo,
Ich habe folgenden Array:
void *nodes[totalNumberOfPixels];Bei einer sehr grossen Anzahl von Pixeln ( ca. 2 millionen ) gibt mir das Programm
einen exc_bad_accessWoran kann das liegen?
Bei einer geringen Grösse des Arrays klappt alles wunderbar.
-
Tippe auf Stack Overflow. 2 Millionen void-Pointer sind (auf einem 32bit-System) 8 MB. Nicht wirklich viel, aber unter Windows AFAIK schon mehr, als der Stack verkraftet.
Lösung: Herauskriegen, wie man den Stack vergrößert (unter Linux wäre das mit ulimit möglich, Windows weiß ich nicht)
Oder besser, solche riesigen Arrays mit new auf dem Heap anlegen. (Oder Container benutzen)
-
ok.
ich arbeite unter mac, also unix derivat.
wie genau funktioniert denn das?
-
- Don't use void*
- Warum keinen Container?
- scheint mir EXC_BAD_ACCESS ein fehler zu sein, der von apple-systemen geworfen wird (Standard C++ ist er jedenfalls nicht). evtl. kriegst du in den apple-mailinglisten eine Antwort, z.B. hier: http://lists.apple.com/archives/Cocoa-dev/2007/Sep/msg01390.html
-
Ist totalNumberOfPixels eine Variable? Wenn ja, dann ist sowas nur in C aber nicht in C++ erlaubt. Alternativen sind new oder std::vector/list ... or whatever. Das Vergroessern des Stacks ist keine Loesung.
-
ok, danke für die Antworten!
Schau mir das mal an