1
有沒有辦法在一個大的malloc塊上使用底點算術,所以你可以給已分配的區域分配多個結構或原始數據類型?我寫這樣的事情,但它不是工作(試圖分配200層結構的15000byte malloc的區域):將較大的malloc塊劃分成較小的「分區」
char *primDataPtr = NULL;
typedef struct Metadata METADATA;
struct Metadata {
.
.
.
};/*struct Metadata*/
.
.
.
primDataPtr = (void*)(malloc(15000));
if(primDataPtr == NULL) {
exit(1);
}
char *tempPtr = primDataPtr;
int x;
for(x=0;x<200;x++) {
METADATA *md = (void*)(primDataPtr + (sizeof(METADATA) * x));
}//end x -for
你在想這個錯誤的方式。閱讀「指針算術」並停止考慮primDataPtr是一大塊字節(字符)。例如,使用指針算術,如果你有一個指向METADATA的指針,那麼(pointer + 1)將指向METADATA的下一個塊,而不是下一個字節。這是編寫可行的解決方案的關鍵。閱讀指針算術的精彩世界......並進行適當的投射。 – 2009-10-13 17:46:30