数组的指针从不分段故障
Pointer of array never seg fault?
我有些不明白的地方。
我是这样做的:
float* test = (float*) malloc(4 * sizeof(float) );
然后我试着做
test[100] = 1.0;
printf("%fn",test[100]);
而且。。。它奏效了。。。
我一直在等待一个分段错误,但没有,我不明白为什么。我想这样做是为了验证我的数组是否已正确分配。我真的没想到,也许我错过了什么,所以我在网上搜索,似乎每个人都有一个segfault。。。所以我来问。感谢
您造成的是未定义的行为-在这种情况下,它按预期工作,但以任何方式依赖它都是一个可怕的想法:编译器优化或更改操作系统可能会突然导致"奇怪"的行为。您应该阅读更多关于这个主题的内容,尽管简而言之,对于未定义的行为,编译器可以随心所欲。
我没有足够的知识来确定,但我假设你的操作系统为你的程序准备了一整页内存。在Linux中,默认情况下它是4 KiB,并且您访问的字节数高达400,所以仍然有足够的空间。因此,您可能正在访问为程序分配的内存,因为操作系统使用的内存块不小于4 KiB。
相关文章:
- 分段故障(堆芯转储)矢量
- 数组的指针从不分段故障
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 分段故障 运行C++代码时出现 SIGSEGV
- 分段故障背包问题
- 分段故障 11,从类函数显示动态 C 字符串
- 面临分段故障 使用 ffmpeg 读取视频时,因为"pFormatCtx-> streams [i]-> codecpar"的地址0x00
- 在C++中,当指向删除和指向不同对象时,分段故障指针
- 分段故障说明
- 分段故障(核心转储)-不知道为什么
- 分段故障线程
- hiredis SET遇到分段故障
- 分段故障,合并排序算法
- 多线程程序中的分段故障和gdb回溯上的不完整信息
- 到达主C++之前分段故障
- 分段故障核心使用 IF流转储
- 使用向量的移动键盘排列(分段故障)
- 在二进制树插入和遍历期间,我得到了分段故障
- 分段故障在类之间返回整数
- C++分段故障BST