我不知道为什么下面的代码片段没有按预期做
做。在第二个循环中返回数字0到9是个好主意。 * scp是一个指针
分配给程序的存储区。

 unsigned char* scp = (unsigned char*)(0x8e000000);
 scp_size = 10;
 for(i = 0; i < scp_size; i++, scp++) {
  *scp = i;
  }
 }

   scp = (unsigned char*)(0x8e000000);
   for(i = 0; i < scp_size; i++, scp++) {
        printf("Data read[%d]: %d\n", i, *scp);
 }

但是,acual输出完全不同:
 [exec] Data read[0]: 3
 [exec]
 [exec] Data read[1]: 3
 [exec]
 [exec] Data read[2]: 3
 [exec]
 [exec] Data read[3]: 3
 [exec]
 [exec] Data read[4]: 128
 [exec]
 [exec] Data read[5]: 35
 [exec]
 [exec] Data read[6]: 32
 [exec]
 [exec] Data read[7]: 1
 [exec]
 [exec] Data read[8]: 18
 [exec]
 [exec] Data read[9]: 146

如果有人在这里将指针与其他内容混为一谈,或者有人想到了什么地方可能出了什么问题?非常感谢

最佳答案

您发布的代码是正确的。问题不在这里。

您要写入的特殊内存区域存在问题。它是只读的,或者不能直接写,或者是以这种方式。如果您告诉我们正在运行此代码的平台,也许有人可以为您提供进一步的帮助。

正如@Jari指出的那样,如果您使用数组访问,它将更加干净。

09-10 08:22
查看更多