gpt4 book ai didi

c# - 如何读取堆栈分配内存的元素计数?

转载 作者:太空宇宙 更新时间:2023-11-03 22:35:08 25 4
gpt4 key购买 nike

假设我只有一个指向先前堆栈分配内存的指针,我想知道我有多少个元素。怎么做?

MSDN说:“stackalloc 的使用自动启用公共(public)语言运行时中的缓冲区溢出检测功能”所以我猜大小​​保持在某处。

最佳答案

您要查找的信息不存在,您有责任跟踪此信息。

缓冲区溢出检测不会检查对“数组”的越界访问—— 没有数组。相反,它使用在堆栈上分配的内存之后添加的随机值。在函数 epilog 中,它检查该值是否仍然存在 - 如果不存在,则终止整个进程。

Buffer overflow protection for stackalloc in .Net

不用说,这并不能确保您不会遭受缓冲区溢出(或下溢,这是这里的主要问题)。它只是试图限制其潜在影响。结合将 stackallocced locals 保留在尽可能小的函数中,这可以非常简单但仍然非常有效地防止恶意代码执行。您仍然可以覆盖(或读取)其他本地人,但您不能覆盖例如函数返回指针。

关于c# - 如何读取堆栈分配内存的元素计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55587627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com