gpt4 book ai didi

c++ - 使用指针

转载 作者:行者123 更新时间:2023-11-28 02:43:21 25 4
gpt4 key购买 nike

这个程序会删除RAM中的所有内容吗?我不敢在我的电脑上运行它。并且在在线编译器上这样做是没有用的。

#include <iostream>
using namespace std;

int main() {

int a = 10;

int *p;
p = &a;

for(int i = 0;i>=0;i++){
*(p+i) = 0;
}

return 0;
}

最佳答案

一般来说,一个程序只能访问其虚拟地址空间内的内存,所以不,这个程序不会“删除所有 RAM”,即使对于某些“删除”的定义是可能的。

这是我期望发生的事情。

  1. 当它试图写入只读内存时,它最终因段错误而崩溃。
  2. 如果您有一个 64 位地址空间,一旦 int 环绕到负数,循环就会终止。程序此时应该会崩溃,因为您已经覆盖了函数 main 的返回地址。

这是我观察到的在我的系统上实际发生的情况,当程序在没有优化的情况下编译时。

  • 程序无限循环,没有崩溃也没有进展,因为在我的系统下似乎是p + 1 == &i。因此,循环会无限期地持续下去,因为 i 在循环体的每次迭代后都会重置为 0,并在循环结束。
  • 为了观察这一点,我使用 -g 进行编译,在 gdb 中,我使用 Control-C 中断程序并打印 p + i&i 并观察到它们是相同的。

请注意,我的观察可能特定于我的系统,绝对特定于我的编译器选项。

关于c++ - 使用指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25198698/

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