当前位置:首页 > 内存 > 正文

c获取己知内存

  • 内存
  • 2024-08-12 08:49:48
  • 9347

一、C语言怎样选择出指定地址的内存并且判断是否为空。求代码。。。“空”至少有两种理解:内容为0、数据无效。我想说的是,我不知道哪个先出现。可以这样写代码---
//#include"stdafx.h"//在vc++6.0中添加这一行。
#include"stdio.h"
#include"time.h"//
#include"stdlib.h"
voidmain(void){
intn,i,*pp[4];
srand((unsigned)time(NULL));
for(i=0;i<4;i++){
pp[i]=&n+rand()%330;
if(*pp[i])printf("Unit0x%Xisnotempty!\n",pp[i]);
elseprintf("Unit0x%Xisempty!\n",pp[i]);
}
}
具体来说,该代码生成的地址不是随机的,而是控制在可访问的范围内。如果没有控制的话如果随机生成的地址超出范围,则会发生错误并终止操作。


二、在C语言中如果已经知道了一个数据的内存地址,怎样直接从内存中读取出该数据?读取内存数据,只能使用指针,只能自己定义一个int指针,让它指向一个内存地址,然后以*指针的形式读出。
你所说的“我不想通过指针变量直接输出int数据的值,而是想直接读取内存中的数据,看看它是否与我的int数据值相同”定义的。”毫无意义。就像你想知道我是不是这个人一样,如果一定要写的话,可以这样写。
#include
intmain()
{
inta=123,b=1234567;
intadda=&a,addb=&b;
int*m,*n;
m=adda;
n=addb;
//printf("*m=%d\t,*n=%d\n",*m,*n);//不使用指针变量直接输出int数据
printf("m=%d\t,n=%d\n",a,b);
return0;br/>}
这里的M和n与a和b没有逻辑联系,它们只代表两个内存段的数据。
为了更清楚,你可以写成
#include
intmain()
{
inta=123,b=1234567;
intadda=&a,addb=&b;//adda和addb只代表两个内存地址
intcontenta,contentb;
contenta=*adda;
contentb=*addb;//这两句的意思是两个内存地址的内容和变量a、b没有逻辑关系
//printf("*m=%d\t,*n=%d\n",contenta,contentb);//这里没有使用指针变量,直接输出int数据
printf("m=%d\t,n=%d\n",a,b);
return0;
}
这里讨论的是比较a内存块(adda)的内容,其中a等于a

上一篇:获取进程内存

下一篇:js获取内存