gpt4 book ai didi

c - 了解 c 中的内存分配和指针

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

<分区>

我正在努力加深对操作系统的理解。我的 Linux 系统使用 4096 字节的页面大小。我是通过运行命令得到的:

[root@localhost]# getconf PAGESIZE
4096

我也知道页面是最少可寻址的内存单元。所以我尝试创建恰好分配:4096 字节的 char 指针,我开始初始化如下:

#include <stdio.h>
#include <stdlib.h>

int main()
{
char *p = malloc(4096*sizeof(char));

for(int i = 0 ;i< 4099;i++)
{
p[i] = 'c';
}
printf("Hey there!\n");

return 0;
}

我知道字符也是 1 字节大小。

这是我不明白的,为什么程序没有段错误,它应该已经用完了分配给它的一页!

这不是一个重复的问题,其他问题是关于在没有页面大小上下文的情况下传递数组寻址的末尾,就像我这里的那样。

根据我的理解,我的指针 p 应该只能访问我分配的 4096 字节内存大小的一页。如果我分配了 5000 字节,那么它将有 2 页,对吗?

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