我使用下面的代码来查找数组中两个连续内存块地址之间的差异。尽管每个项目(这里是“int”)的打印大小为4,但包含该项的两个相邻块之间的地址差距竟然是1。地址差应该是4,对吗?
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
int a[10];
for(int i=0;i<10;i++)
cin>>a[i];
cout<<"size of 1 block = "<<sizeof(int)<<"\n";
for(int i=1;i<10;i++){
// cout<<"Difference between address of consecutive memory blocks\n";
cout<<" "<<&(a[i])- &(a[i-1])<<"\n";
}
return 0;
}
输出
1个块的大小=4
1
1
1
1
1
1
1
1
1
cout<<" "<< reinterpret_cast<const char*>(&(a[i])) - reinterpret_cast<const char*>(&(a[i-1]))<<"\n";
- marcinj