Jaki jest cel ANYSIZE_ARRAY
znajdujący się w WinNT.h?Jaki jest cel ANYSIZE_ARRAY w <winnt.h>?
Widzę post na blogu MSDN na ten temat od 2004 roku, ale nie ma to dla mnie żadnego sensu.
Jaki jest cel ANYSIZE_ARRAY
znajdujący się w WinNT.h?Jaki jest cel ANYSIZE_ARRAY w <winnt.h>?
Widzę post na blogu MSDN na ten temat od 2004 roku, ale nie ma to dla mnie żadnego sensu.
Zakładam, że mówisz o this blog post.
Jest często używany, gdy zmienna wielkości (brak danych w czasie kompilacji) array jest częścią struktury:
typedef struct {
int CommonFlags
int CountOfThings;
THING Things[ANYSIZE_ARRAY]; //Things[1];
} THINGSANDFLAGS;
Aby pracować z tymi strukturami często najpierw wywołać pożądany API, aby uzyskać rozmiar dane, a następnie przydzielić blok pamięci wystarczająco duży i wreszcie zadzwoń ponownie do tego samego interfejsu API, aby mógł wypełnić dane ...
dzięki - dlaczego używać tego na połączonej liście? – jglouie
@LemonBeagle Połączona lista wymaga więcej pamięci i/lub implementacja API może już zawierać elementy wewnątrz tablicy i może po prostu zapakować ją do bufora wywołującego. Wolniej jest też przejrzeć listę przedmiotów i musisz uwolnić każdy przedmiot, a nie tylko duży bufor ... – Anders
Z this page:
W C, macierz zmiennych wielkości zadeklarowany jako
a[1]
luba[ANYSIZE_ARRAY]
, gdzieANYSIZE_ARRAY
jest zdefiniowany jako1
. Następnie jest używany tak, jakby był większy.
Podaj nam link do postu na blogu MSDN? –
@Agnel http://blogs.msdn.com/b/oldnewthing/archive/2004/08/26/220873.aspx – jglouie