1
6
不,不可能。编译器在内部添加有关分配了多少内存以及创建了多少元素的信息
因此,您必须在仍然知道的情况下单独存储大小。
事实上,你没有,因为
你不应该使用
请注意,我使用了
也无法避免
如果它是一个
|
2
1
无法从指针检索分配的内存量。让我们暂时忘记存在标准容器(和智能指针),然后可以使用封装指针和大小的结构。我能想象的最简单的动态数组是:
请注意,his只是为了演示而提供的一个基本示例,例如,您不应该复制此结构的实例,否则会发生不好的事情。但是,它可以这样使用:
即在使用数组的代码中没有指针,也没有手动分配内存,这是一件好事。实际上,这本身已经是一件大事了,因为现在您可以使用RAII并且不能忘记删除内存。 接下来,您可能需要调整阵列的大小,这只需要多一点样板文件(再次强调:不要小题大做!):
它可以这样使用:
当然,当大小超过容量时,需要重新分配内存,并且需要更多的东西才能使这个包装真正起作用(例如,能够复制就好了)。
底线是:
不要这样做!
要编写一个好的完整的容器类,需要比我在这里概述的内容多得多,其中大部分内容都是锅炉板,不能真正为您的代码库增加价值,因为
|
7BeholdeR7 · 文件夹的重量超过其中的文件(六倍) 2 年前 |
Bram Vanroy · 为什么假值(0)的字节数小于真值(1)? 6 年前 |
user7088941 · 无法在tkinter中更改按钮字体大小 6 年前 |
Chewbaka · 嵌入函数中的可变大小元素,但输入和输出固定 6 年前 |
Edwin ZAP · 多布局:匹配父布局、调整内容、调整大小 6 年前 |
Kanishk Tanwar · 用于查找文本文件大小的小片段 7 年前 |
Inertial Ignorance · 为什么字符的大小只有8位? 7 年前 |