我不确定为什么下面的代码片段没有做它应该做的事情.在第二个循环中返回数字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);
}
Run Code Online (Sandbox Code Playgroud)
然而,实际输出完全不同:
[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
Run Code Online (Sandbox Code Playgroud)
任何人都有一个想法,如果我在这里与指针或任何其他想法可能出错的东西混在一起?非常感谢
您发布的代码是正确的.问题不在这里.
您正在写入的特殊内存区域存在问题.要么它是只读的,要么不能直接写,或者用这种方式写.如果您告诉我们运行此代码的平台,也许有人可以帮助您.
正如@Jari指出的那样,如果你使用数组访问它会更干净.