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