gpt4 book ai didi

c:内存分配(发生了什么)

转载 作者:太空宇宙 更新时间:2023-11-04 05:01:49 25 4
gpt4 key购买 nike

请看一下这段代码。我为第一个变量分配一个字节,为第二个变量分配另一个字节。但是,编译器似乎分配了更多(或者我遗漏了一些东西)。该程序输出两个字符串,即使它们的长度多于一个字节。

void main() {
char* some1 = malloc(1);
sprintf(some1,"cool");
char* some2 = malloc(1);
sprintf(some2,"face");
printf("%s ",some1);
printf("%s\n",some2);
}

拜托,任何人都可以了解分配内存时发生的事情。

最佳答案

您正在调用未定义的行为。此时绝对可能发生任何事情,包括您可能会想到的。

实际发生的是系统确实以更大的 block 为您分配内存。因此,当您超出程序定义的范围时,就系统而言,您还没有超出缓冲区。几乎所有的实现都这样做;系统跟踪 16 字节 block 比逐字节跟踪要容易得多。

关于c:内存分配(发生了什么),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2725867/

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