令我疑惑的指针内存分配
[code=C/C++][/code]
#include <iostream>
#include <iomanip>
using namespace std;
class A
{
public:
A()
{
for (int i = 0; i<20; i++)
{
m_iArr[i] = 100;
}
}
private:
int m_iArr[20];
};
int main()
{
A *a = new A;
int *p = new int;
char *q = new char;
cout <<sizeof(*a)<<endl;
cout << "a地址 =" << (int)a << '\t' << "p地址 = " <<(int)p << '\t'<< "q地址="<< (int)q <<endl;
return 0;
}
输出为
80
a地址 =3757968 p地址 = 3758096 q地址=3758144
请按任意键继续. . .
问题:
为什么不管分配的指针为什么类型。指针地址都相差48.相差48是不是因为内存位数对齐?p地址 - a地址是不是等于a的内存大小?又或者,a地址 =3757968 p地址 = 3758096 q地址=3758144不是打印指针的地址?
[解决办法]
地址的话,用&
[解决办法]
你打印的是指针指向的地址吧?