给出一个结构体成员的地址计算该结构体的起始地址,据说内核代码中有这样用的,但还没有看到。不过觉得这个题的解决方法还是有一定技巧的,就总结一下。下面是实现的代码。 其实整个程序中最关键的部分就是如何求出结构体中某个成员相对于结构体首地址的偏移量。这里的解决方法是:假设存在一个虚拟地址0,将该地址强制转 ...
分类:
其他好文 时间:
2016-11-05 00:07:23
阅读次数:
372
如果你对null 进行操作就会产生空指针异常Object obj = new Object();你要知道 obj是一个Object指针变量,指向Object类的一个实例我们说obj是一个对象 实质是它指向一个对象的首地址 如果这个指针变量obj 没有指向任何空间 你调用它的方法和属性就会出错例如 O ...
分类:
其他好文 时间:
2016-11-02 23:29:00
阅读次数:
225
指针和数组的关系 1.一维数组 Int a[5]={1.2.3.4.5}; 1)( P=&a[0]和p=a等价) 在C语言中数组名就是该数组的首地址 2)printf("%d",a[1]); printf("%d",*(a+1)); 当我们以前使用a[1]的时候, 事实上计算机内部自动将其转换为*( ...
分类:
编程语言 时间:
2016-10-27 00:55:57
阅读次数:
132
内存的划分: 1,寄存器。 2,本地方法区。 3,方法区。 4,栈内存。 存储的都是局部变量。 而且变量所属的作用域一旦结束,该变量就自动释放。 5,堆内存。 存储是数组和对象(其实数组就是对象) ,凡是new建立的都在堆中。 特点: 1)每一个实体都有首地址值。 2)堆内存中的每一个变量都有默认初 ...
分类:
其他好文 时间:
2016-10-21 19:54:54
阅读次数:
142
遇见这种问题一般都是空指针,即:指针里没有赋值~ 如果你对null 进行操作就会产生空指针异常 Object obj = new Object(); 你要知道 obj是一个Object指针变量,指向Object类的一个实例 我们说obj是一个对象 实质是它指向一个对象的首地址 如果这个指针变量obj ...
分类:
其他好文 时间:
2016-10-15 22:28:34
阅读次数:
137
一、内存管理:new和delete 1、new操作符:从操作系统获得内存块,并返回该内存块的首地址。 delete操作符:将new申请的内存返还给操作系统。 开始一个简单的例子: #include <iostream> #include<cstring> using namespace std; i ...
分类:
编程语言 时间:
2016-10-14 23:24:42
阅读次数:
265
二维数组及其指针1)在了解二维数组之前,我们先来了解一维数组及其指针我们知道,一维数组中:数组名代表-->数组首元素的首地址(千万不要认为是数组的首地址(&a),绝对不是)在内存中,该代码的表现形式如下图:</span>#include<stdio.h>
{
inta[4];
int..
分类:
编程语言 时间:
2016-10-06 23:08:48
阅读次数:
210
二维数组在内存中占据连续的空间。在内存中从上到下存储各行元素,在同一行中按照从左到右的顺序存储。 因此可以根据行号和列号计算出相对于数组首地址的偏移量,从而找到对应元素。 eg. int *matrix rows行columns列 matrix[ row * columns + column] 二维 ...
分类:
编程语言 时间:
2016-10-05 17:26:48
阅读次数:
164
句柄vs指针 句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是住留在内存的。如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。但是,如果您真的这样认为,那么您就大错特错了。我们知道,Windows是一个以虚拟内存为基 ...
分类:
其他好文 时间:
2016-10-03 08:52:45
阅读次数:
208
pread和pwrite函数是Linux提供的另外一种读取和写入文件的操作。pread函数的操作可以看作是顺序调用了lseek函数和read函数,同样pwrite函数也类似。 函数原型: 函数参数: fd:要操作的文件描述符 buf:在pread函数中表示存储读出数据的内存首地址,在pwrite函数 ...
分类:
其他好文 时间:
2016-10-01 12:51:16
阅读次数:
235