【发布时间】:2009-10-13 15:42:26
【问题描述】:
有没有办法在大型 malloc 块上使用指针算法,以便您可以将多个结构或原始数据类型分配给已分配的区域?我正在写这样的东西,但它不起作用(试图将 200 个结构分配给 15000 字节的 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 的下一个块,而不是下一个字节。这是编写可行解决方案的关键。阅读指针算术的精彩世界......以及正确的转换。
标签: struct pointers malloc math