2011-01-19 48 views
1

对于我正在使用的类,我们需要开发分配实用程序。分配地址的实例化结构(分配分配)

除了安全之外,我将使用远指针来接收和分配某些结构的地址。我也不允许在这项任务中使用“memalloc”。

我提到:Linked Lists in C without malloc 了解如何在不使用memalloc的情况下制作链接结构。但是,我需要知道如何将新实例分配给特定地址。例如,如果我有一个起始指针指向地址0x5000,我想创建我的列表,以便我可以使用增量偏移量(比如说256)来启动我的下一个结构(地址方面)256字节我的出发点。

此作业基于熟悉分割和x86架构。

任何帮助表示赞赏!

回答

3

取决于你想要做什么,你可能需要使用以下工具的组合:

安置新:您可以通过使用以下语法构建在特定内存位置的物体:

new (reinterpret_cast<void*>(0x500)) MyObject(/* ...ctor args... */); 

这不会分配任何新的内存;相反,它只是使用指定的内存地址作为接收者对象调用构造函数。小心对齐限制!

自定义分配器。您可以在std::allocator<T>的行上定义一个新类,用于在您指定的位置保留记忆。然后,您可以创建STL容器,在您想要的位置自动使用内存。

+0

嗨,谢谢你的回应。 我需要澄清一些事情。除了我创建的工具之外,我不允许使用分配工具。所以没有新的,删除,免费等... 我更希望能够做的是创建一个指针,指向某个地址,然后在我的指针引用的指向地址创建变量和数据结构。 – MHZ 2011-01-19 04:21:21

+0

让我进一步回答这个问题。 是否可以拒绝地址并将其转换为数据类型? – MHZ 2011-01-19 04:26:48

0

我刚刚收到来自我的教授的电子邮件,我不允许使用“新”操作符。只是为了仔细检查你告诉我的情况,我可以再问一下这个例子:

struct example{ 
    int a; 
    struct example *next; 
}; 

void *ptr; 
ptr = 0x5000; 
ptr = &((example)*ptr); 

或者说,