如何使用calloc / malloc等函数对动态创建的存储进行正确排序,以便它以FIFO方式运行?

时间:2016-01-20 03:17:06

标签: c++ calloc

我是编程和自学的新手,如果我使用了一些不正确的术语,请原谅我。

我正在使用calloc()在我的堆中创建存储空间,我可以保证初始化,因为没有放入垃圾值。从观察calloc的行为来看,似乎有一个单一指针用于指向指定大小类型的整个地址块。一旦我增加在下一个地址中存储某些东西,就不再有任何东西指向前一个地址。我在这里搜索了答案,无法编写任何有效的代码。最后我做了一个计数器来跟踪我递增指针的次数,然后递减该数量然后从我动态创建的数组中读取我再次通过它递增。

虽然它确实有效,但我不禁想到有更好的方法可以做到这一点。我还认为,通过使用糟糕的方法,我已经远远不够了,但是在知道研究我的问题时甚至不知道要使用哪些术语。我知道calloc数组存储在堆上,直到我释放为它分配的每个连续空间。我开始寻找“堆排序”,但我相信这超出了我的范围,而且我试图做的事情过于复杂。我还将它存储在作为缓冲区的预定义数组中,但我又想直接从calloc数组中读取,即使这涉及使用另一个指针来执行此操作。为了避免进一步漫无目的,如果有人能够如此友善地指出我正确的方向。谢谢。

2 个答案:

答案 0 :(得分:0)

现在暂时忘记C级功能,例如k:\malloc

还要忘记像freenew这样的C ++级别同上运算符。

使用std::queue from the <queue> header

使用示例:

delete

答案 1 :(得分:0)

保持一个跟踪calloc返回的原始指针的变量。

此外,您可以通过将其视为数组来访问calloc中的不同值。

如果您发布一些代码,我可以举个例子。