[问题] 自己练习运用基础的指标小问题

楼主: xjpjeass (人人)   2015-08-04 10:13:19
以下是我打的程式码
#include <stdlib.h>
#include <stdio.h>
int main()
{
int times=0;
int NUM=123;
int *pNUM=&NUM;
while(times<5){
printf("%p>>>%d\n",pNUM,*pNUM);
pNUM+=1;
*pNUM=NUM;
times+=1;
}
system("pause");
return 0;
}
我的目标是把变量NUM的值123
也写入NUM后面接的4个位址
假设NUM的位址是0x0001
那么结果应该是:
0x0001 值→123
0x0005 值→123
0x0009 值→123
0x000d 值→123
0x0011 值→123
可是编译器显示的只有第一行,也就是
0x0001 值→123
为什么会这样呢?问题是否出在其实后面四个是无法写入的?
菜鸟请各位高手指教orz
作者: Feis (永远睡不着 @@)   2015-08-04 10:35:00
后面四个不只无法写入,连是否存在都是个问题~
作者: kwpn (ITSST)   2015-08-04 13:06:00
在C++里你需要用到多少内存,都要明显地配置清楚.
作者: M013020058 (帅翰)   2015-08-04 19:02:00
想问,指标可以运用的地方是?目前只知道抓变量的位置
作者: stupid0319 (征女友)   2015-08-04 20:27:00
恭喜你得到内存溢位的高级技能利用溢位修改执行绪堆叠内容,可是hack的超高技巧!
楼主: xjpjeass (人人)   2015-08-05 00:05:00
所以如果要达成那个目标,要先跟电脑宣告要使用的内存配置,有明确的范围才能使用其中的位址是吗?
作者: stupid0319 (征女友)   2015-08-05 00:18:00
若照程式码来看,pUNM+1 = &times所以执行后times = 124 ?至于为什么,跟堆叠stack有关在system("pause");自己印看看times吧

Links booklink

Contact Us: admin [ a t ] ucptt.com