C+中malloc的定制实现+; 我遇到了一个面试问题,他们要求在C++中实现MalCube()和Free函数。

C+中malloc的定制实现+; 我遇到了一个面试问题,他们要求在C++中实现MalCube()和Free函数。,c++,c,memory,malloc,free,C++,C,Memory,Malloc,Free,在最开始的时候,声明了一个大小为50000的字符数组(50000字节)。假设这是堆内存,编写malloc和free函数来分配内存块并释放内存 < >任何人都可以提供C++工作/伪代码或仅仅解释机制?(显然,代码会使它更容易理解) 谢谢, Rohit我以前没有测试过它,但我认为可以通过使用新的关键字和模板来支持泛型状态来创建所需类型的数组, 但是我会跟随这个问题来了解C++英雄的反应。编写一个生产级动态内存分配器是一项非常艰巨的任务,编写一个玩具是很简单的。这个问题显然是为了测试你的技能,但从别人

在最开始的时候,声明了一个大小为50000的字符数组(50000字节)。假设这是堆内存,编写malloc和free函数来分配内存块并释放内存

< >任何人都可以提供C++工作/伪代码或仅仅解释机制?(显然,代码会使它更容易理解)

谢谢,
Rohit

我以前没有测试过它,但我认为可以通过使用新的关键字和模板来支持泛型状态来创建所需类型的数组,
但是我会跟随这个问题来了解C++英雄的反应。

编写一个生产级动态内存分配器是一项非常艰巨的任务,编写一个玩具是很简单的。这个问题显然是为了测试你的技能,但从别人的作品中寻找灵感仍然是公平的


malloc的Kernighan和Ritchie的“C编程语言”。研究它并考虑其设计和实现的含义。考虑如何改进它以更好地执行,无片段,或处理多个线程。在此之后,编写自己的玩具分配器并回答出现的任何问题应该不再困难。

可以使用几种不同的算法。为了这样一个 内存小,我只需在每个块前面加上指向下一个块的指针 块,以及指示是分配还是释放的标志。一 分配包括找到足够大的空闲块,并将其拆分 如有必要,将返回的块标记为已分配。免费的 包括将块标记为自由。在某种程度上,你也必须 合并块:如果两个自由块相互跟随,则它们将合并 合并成一个。(我在实现中的分配过程中这样做了。)

上述算法本身并不困难。真正的诀窍是 获得所有不同的演员阵容等等。这是一个很好的锻炼
在非常低级的编程中

我认为这太宽泛了,分配程序太大,无法容纳一个答案,而且基本知识是如此,在这里添加它们的价值很低。我认为面试问题背后的想法是让你思考如何管理自己的内存,以及如何跟踪使用的和未使用的内容。努力请更具体地了解你在哪里卡住。C++还是C?我认为“C中malloc的自定义实现”我认为使用
new
不是解决这个问题的方法。使用new创建malloc?