011
28.02.2005, 21:28 Uhr
~sqrt(-1)
Gast
|
WOW!
Folgendes:
C++: |
struct _AElement { short Element; }*APointer;
struct _BElement { float Element[3]; }*BPointer;
APointer = (_AElement*)VoidPointer; LogArray(APointer, 45, 102); // Alles Okay!
BPointer = (_BElement*)VoidPointer; LogArray(BPointer, 55, 400); // Absturz!
template <class ElementType> DWORD LogArray(ElementType* ArrayPointer, int ArrayStride, int ArraySize) { LOGG("In der Template-Funktion"); struct _LoggedArrays { void* ArrayPointer; DWORD FilePos; }LoggedArrays[1000];
ElementType ArrayBuffer[100000];
for(int i=0; i < 100000; i++) { if(LoggedArrays[i].ArrayPointer == ArrayPointer) return LoggedArrays[i].FilePos; if(LoggedArrays[i].ArrayPointer == 0) { LoggedArrays[i].ArrayPointer = FilePointer; ... } } ... }
|
Wenn das Array "ArrayBuffer" 100000 Elemente hat, fliege ich irgendwann einfach so raus - nicht einmal die LOGG("...")-Ausgabe wird geliefer! Die Parameter sind immer Okay!
Reduziere ich die Array-Größe von ArrayBuffer auf eine kleinere Zahl (z.B. 100), gibt es keine Probleme!
ElementType ist nie größer als 12 Byte! Was zum Teufel ist da los? |