|
1
33
对。
马洛克回归
|
|
|
2
14
是的,很安全。在分配内存时,运行库跟踪每个分配的大小。当您调用free()时,它会查找地址,如果找到该地址的分配,则会释放正确数量的内存(在该地址分配的块)。 |
|
|
3
6
是的——
您的其他代码并不十分安全:
你应该
不
从malloc转换返回(在c中)。这可以掩盖忘记
|
|
|
4
3
对。函数原型
|
|
|
5
3
在C中,它是完全安全的,因为没有可调用的析构函数。 内存系统跟踪它们的分配大小。 在C++中,必须删除新的相同类型,包括使用Dele[]运算符删除新的数组。 这只是为了确保调用析构函数。 |
|
|
6
2
也许没有 感觉 因为在幕后发生的魔法而安全。C运行时和/或操作系统本身正在积极跟踪malloc返回的内存,包括其大小和位置。看吧,虽然你感觉好像在把一个无类型的指针传递回free(),但实际上你传递回了一个对内存管理器正在积极跟踪的对象的引用。 |
|
|
7
1
是的,它是安全的。 |
|
|
8
-1
是的,但通常这是设计不好的表现。 malloc()通常用于分配缓冲区(相同基元类型的大型数组)或对象(初始化了字段的结构)。在这两种情况下,malloc和free都应该匹配
在一种情况下,malloc和free-match,在另一种情况下返回分配的内存,也有辅助资源,构造函数和析构函数匹配。应该很少分配一个内存区域,但不知道它用于什么目的。而且你不应该交错分配和混乱地释放。 现代C++用“自己拥有”对象的唯一指针来收紧这一切。虽然你可以有一个独特的指向虚空的指针,但它是非常罕见的。 |
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |