gpt4 book ai didi

c - 为什么编译器分配的内存多于所需的内存?

转载 作者:行者123 更新时间:2023-12-02 09:37:21 25 4
gpt4 key购买 nike

我正在进行一些调试,发现编译器分配的内存超过了所需的内存。就我而言,我声明了一个整数,后跟一个字符串“name [10]”。尽管我刚刚提到了 10 个,但我能够插入 10 多个字母。而且我还能够打印所有这些字符。我注意到限制不是 10 而是 28。28 之后插入的字符不会显示。有人可以向我解释一下为什么会这样吗?

最佳答案

它并没有为该变量分配更多内存,您只是碰巧能够写入它旁边的内存的某些部分,但这样做可能会覆盖其他变量,甚至是您无法控制的变量,如调用堆栈或内存管理器本身创建的控制变量。

在不应该写的地方会引发未定义的行为,这意味着它可能会或可能不会起作用,并且可能会或可能不会产生后果。

其中一个后果被称为 stack buffer overflow ,一个允许运行任意代码的安全漏洞,并被蠕虫和漏洞广泛利用来侵入计算机系统。

关于c - 为什么编译器分配的内存多于所需的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24021342/

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