gpt4 book ai didi

c - C中通过指针分配内存

转载 作者:行者123 更新时间:2023-12-01 08:52:33 25 4
gpt4 key购买 nike

我正在学习如何使用指针,所以我编写了以下程序,将区间 [1,100] 中的整数值分配给内存中的一些随机位置。

当我读取这些内存位置时,printf 显示所有值,然后给我一个段错误。这似乎是一种奇怪的行为,因为我希望看到所有值或段错误,但不能同时看到两者。

谁能解释一下为什么我要同时看到这两个?

谢谢。这是代码

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

int main()
{
char first = 'f';
char *ptr_first = &first;
int i=1;
for(i=1;i<101;i++)
*(ptr_first+i) = i;
for(i=1;i<101;i++)
printf("%d\n", *(ptr_first+i));
return EXIT_SUCCESS;
}

最佳答案

一点也不奇怪。您正在使用您的变量 first,它在堆栈上。您实际上所做的是愉快地覆盖堆栈(否则从堆栈上的缓冲区溢出中得知),因此可能会破坏任何返回地址等。

由于 main 被 libc 调用,返回 libc 会导致崩溃。

关于c - C中通过指针分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6214614/

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