C/C++程序内存情况

一个由C/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放
4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放
5、程序代码区—存放函数体的二进制代码。

数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。指针可以随时指向任意类型的内存块。
char *p1 = "abc";
char *p2 = "abc";//这里p1和p2指向文字常量区的同一段字符串常量,所以p1==p2为true
cout<<(p1==p2)<<endl;//true
char a[]="abc";
char b[]="abc";//数组a和数组b是在栈区分配的,他们只是内容一样而已,其自身的地址是不一样的,所以a==b为false
cout<<(a==b)<<endl;//false

DataInputStream能以一种与机器无关(当前操作系统等)的方式,直接从地从字节输入流读取JAVA基本类型和String类型的数据,常用于网络传输等(网络传输数据要求与平台无关)常用方法包括

DataOutputStream则能够直接将JAVA基本类型和String类型数据写入到其他的字节输入流

write(byte[] b, int off, int len) 

          将指定 byte 数组中从偏移量 off 开始的 len 个字节写入基础输出流。

write(int b) 

          将指定字节(参数 b 的八个低位)写入基础输出流。

在 java中,所有的值都按照 高位在前的模式写出, 不管使用何种处理器, 这使得java 数据文件独立于平台;

3.1)读入二进制数据: DataInputStream 类实现了DataInput接口, 为了从文件中读取二进制数据, 可以将 DataInputStream与某个字节源进行组合, 如 FileInputStream:
DataInputStream dis = new DataInputStream(new FileInputStream(“employee.dat”));

3.2)写出二进制数据: DataOutputStream dos = new DataOutputStream(new FileOutputStream(“employee.dat”));


  1. int readInt()  
  2.      throws IOException  
读取四个输入字节,并返回一个int类型的值。假如a到d是读取第一到第四个字节,则返回的值是:
	
	(((a & 0xff) << 24) | ((b & 0xff) << 16) |
  	((c & 0xff) <<  8) | (d & 0xff))

这个方法适用于读取DataOutput接口的writeInt方法所写的字节数据.


public final void writeInt(int v)

参数

  • v -- 一个int值写入到输出流。

  1. void readFully(byte[] b)  
  2.         throws IOException  

从输入流中读取一些字节,并将它们存储到缓冲区数组b。读取的字节数等于b的长度。

此方法阻塞,直到下列条件之一发生:

  • b.length字节的输入数据是可用的,在这种情况下,可以保证正常的返回数据。
  • 文件结束是被检测的,在这种情况下,EOFException会被抛出。
  • I/O错误发生,在这种情况下,IOException会被抛出。 

 如果b数组为空,会抛出NullPointerException异常。如果b.length是零,那么没有字节被读。否则,第一个字节读取存储到元素b[ 0 ],下一个存储到b[ 1 ],等等。如果从这个方法中抛出一个异常,那么它可能是一些,但不是所有的b数组从输入流读的字节数据都被更新


java.io.DataOuputStream.writeInt(int v) 方法写入一个int值的基础流为四个字节。写入计数器是由4对这种方法的成功调用递增

一个int值写入到输出流

void writeInt(int v);//将一个int值以4-byte值形式写入到输出流中先写高字节.






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值