Hallo Hunter
Ich denke ich erkläre es am besten mal ohne den Bezug zu deiner Toolbar. Schauen wir uns mal verschiedene Situationen mit sizeof an:
Dies schliesse ich aus deinen Postings. Die Grösse der Struktur TBBUTTON ist also 20 Bytes. So, nächste Situation:
C++:
TBBUTTON buttons[3];
sizeof(buttons) = 60
Ein Array (new T[N] ist kein Array
) mit fixer Grösser gibt bei sizeof entsprechend die Anzahl Elemente * Grösse eines Elements zurück. Mit anderen Worten:
C++:
T someArray[N];
sizeof(someArray) = sizeof(T) * N
So, nun kommen wir zu deinem Fall:
C++:
TBBUTTONS* buttons = new TBBUTTONS[3];
In diesem Falle ist buttons kein Array. Es ist lediglich ein Zeiger und somit gibt sizeof auch nur die Grösse des Zeigers zurück. Nehmen wir an du compilierst dein Programm als 32 Bit dann ist sizeof(buttons) entsprechend 4, weil da ein Pointer halt 4 Bytes gross ist. Das Ergebniss ist also nicht wie du meinst 60 sondern 4. Anders gesagt:
C++:
T* value = new T[N];
sizeof(value) == 4
Nun noch kurz zu deiner Verwendung:
Warum machst du immer mit sizeof? Das ist für nichts, du hast ja bereits eine Variable, die die Anzahl Buttons angibt, bei new gibst du ja bereits mit
quantityFiles an wie viele Buttons du allozierst.
Viele Grüsse
Cromon