- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
将此签名用于 GlobalAllocator
的方法:
unsafe fn alloc(&self, layout: Layout) -> *mut u8
以及方法文档中的这句话:
假设我们要为 [i32, 10]
分配一些内存块。假设 i32
的大小为 4 个字节,我们的示例数组将需要 40 个字节用于请求的存储。
现在,分配器找到了符合我们要求的内存点。大约 40 字节的内存区域……但是……那里有什么?我总是阅读术语垃圾数据,并假设它只是已经被另一个进程、程序等存储在那里的旧数据。
UB
。为什么还没有初始化?取消分配
一些内存时,究竟会发生什么?最佳答案
What's unitialized memory? Just data that is not initialized with zeros of with some default value for the type that we want to store there?
比这两个都差。从未初始化的内存中读取是未定义的行为,因为您无法再推断这样做的程序。实际上,编译器经常优化假设会触发未定义行为的代码路径永远不会被执行并且它们的代码可以被删除。或不,取决于编译器的侵略性。
如果您可以可靠地从指针读取数据,它就会包含任意数据。它可能是零,它可能是旧数据结构,它可能是旧数据结构的一部分。它甚至可能是密码和加密 key 之类的东西,这是读取未初始化内存有问题的另一个原因。
Why not always memory it's initialized before returning the pointer? It's too costly? But the memory must be initialized in order to use it properly and not cause UB. Why then doesn't comes already initialized?
是的,成本是个问题。通常在分配一 block 内存后要做的第一件事就是写入它。当调用者无论如何都要用它想要的值覆盖它时,让分配器“预初始化”内存是一种浪费。这对于用于 IO 或其他大型存储的大型缓冲区尤其重要。
When some resource it's deallocated, things musn't be pointing to that freed memory. That's that place got zeroed? What really happens when you deallocate some piece of memory?
这取决于内存分配器是如何实现的。大多数不会浪费处理能力来清除已解除分配的数据,因为它在重新分配时无论如何都会被覆盖。一些分配器可能会将一些簿记数据写入释放的空间。 GlobalAllocator
是系统附带的任何分配器的接口(interface),因此它会因环境而异。
I always read the term garbage data, and assume that it's just old data already stored there by another process, program... etc.
值得注意:所有现代桌面操作系统在进程之间都有内存隔离——您的程序无法访问其他进程或内核的内存(除非您通过专门的功能明确共享它)。内核将在将内存分配给您的进程之前清除内存,以防止泄露敏感数据。但出于上述原因,您可以看到自己流程中的旧数据。
关于rust - 什么是未初始化内存,为什么在分配时没有初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73837626/
我是 Spring 新手,这就是我想要做的事情: 我正在使用一个基于 Maven 的库,它有自己的 Spring 上下文和 Autowiring 字段。 它的bean配置文件是src/test/res
我在我的测试脚本中有以下列表初始化: newSequenceCore=["ls", "ns", "*", "cm", "*", "ov", "ov", "ov", "ov", "kd"] (代表要在控
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Class construction with initial values 当我查看 http://en.
我得到了成员变量“objectCount”的限定错误。编译器还返回“ISO C++ 禁止非常量静态成员的类内初始化”。这是主类: #include #include "Tree.h" using n
我有如下所示的a.h class A { public: void doSomething()=0; }; 然后我有如下所示的b.h #include "a.h" class b: publi
我需要解析 Firebase DataSnapshot (一个 JSON 对象)转换成一个数据类,其属性包括 enum 和 list。所以我更喜欢通过传递 DataSnapshot 来手动解析它进入二
我使用 JQuery 一段时间了,我总是使用以下代码来初始化我的 javascript: $(document).ready( function() { // Initalisation logic
这里是 Objective-C 菜鸟。 为什么会这样: NSString *myString = [NSString alloc]; [myString initWithFormat:@"%f", s
我无法让核心数据支持的 NSArrayController 在我的代码中正常工作。下面是我的代码: pageArrayController = [[NSArrayController alloc] i
我对这一切都很陌生,并且无法将其安装到我的后端代码中。它去哪里?在我的页脚下面有我所有的 JS? 比如,这是什么意思: Popup initialization code should be exec
这可能是一个简单的问题,但是嘿,我是初学者。 所以我创建了一个程序来计算一些东西,它目前正在控制台中运行。我决定向其中添加一个用户界面,因此我使用 NetBeans IDE 中的内置功能创建了一个 J
我有 2 个 Controller ,TEST1Controller 和 TEST2Controller 在TEST2Controller中,我有一个initialize()函数设置属性值。 如果我尝
据我所知, dependentObservable 在声明时会进行计算。但如果某些值尚不存在怎么办? 例如: var viewModel ={}; var dependentObservable1 =
我正在阅读 POODR 这本书,它使用旧语法进行默认值初始化。我想用新语法实现相同的功能。 class Gear attr_reader :chainring, :cog, :wheel de
我按照 polymer 教程的说明进行操作: https://www.polymer-project.org/3.0/start/install-3-0 (我跳过了可选部分) 但是,在我执行命令“po
很抱歉问到一个非常新手的Kotlin问题,但是我正在努力理解与构造函数和初始化有关的一些东西。 我有这个类和构造函数: class TestCaseBuilder constructor(
假设我们有一个包含 30 列和 30 行的网格。 生命游戏规则简而言之: 一个小区有八个相邻小区 当一个细胞拥有三个存活的相邻细胞时,该细胞就会存活 如果一个细胞恰好有两个或三个活的相邻细胞,那么它就
我是 MQTT 和 Android 开放附件“AOA” 的新手。在阅读教程时,我意识到,在尝试写入 ByteArrayOutputStream 类型的变量之前,应该写入 0 或 0x00首先到该变量。
我有 2 个 Controller ,TEST1Controller 和 TEST2Controller 在TEST2Controller中,我有一个initialize()函数设置属性值。 如果我尝
我有一个inotify /内核问题。我正在使用“inotify” Python项目进行观察,但是,我的问题仍然是固有的关于inotify内核实现的核心。 Python inotify项目处理递归ino
我是一名优秀的程序员,十分优秀!