当前位置: 技术问答>linux和unix
为什么32机上的指针长度为8字节呢 ?
来源: 互联网 发布时间:2016-09-20
本文导语: #include class base { public: virtual void func(){printf("call base::funcn");}; }; int main() { void(base::*p)() = &base::func; // 以下在32位机器上, GCC4.4.1 是 8 printf("sizeof( void(base::*p)()) %dn" , sizeof(p) ); // 长度为 8 pr...
#include
class base
{
public:
virtual void func(){printf("call base::funcn");};
};
int main()
{
void(base::*p)() = &base::func;
// 以下在32位机器上, GCC4.4.1 是 8
printf("sizeof( void(base::*p)()) %dn" , sizeof(p) ); // 长度为 8
printf("sizeof( void(base::*p)()) %dn" , sizeof(class base) );
return 0;
}
|
VC 6.0结果是 4 4。
会不会是gcc的一个bug?或者是方言?
会不会是gcc的一个bug?或者是方言?
|
艹,竟然是C++………………
我的GCC指针是4字节,如下:
我的GCC指针是4字节,如下:
.file "lenpoint.c"
.text
.globl main
.type main, @function
main:
pushl %ebp
movl %esp, %ebp
subl $16, %esp
movl $0, %eax
leave
ret
.size main, .-main
.ident "GCC: (Ubuntu 4.4.3-4ubuntu5) 4.4.3"
.section .note.GNU-stack,"",@progbits
|
sizeof( void(base::*p)()) 8
sizeof( void(base::*p)()) 4
gcc version 4.4.1 [gcc-4_4-branch revision 150839] (SUSE Linux)
sizeof( void(base::*p)()) 4
gcc version 4.4.1 [gcc-4_4-branch revision 150839] (SUSE Linux)
|
http://hi.csdn.net/space-3382811-do-wall.html
兄弟看这个链接,里面我回复了你啊
我仅仅测试了void(base::*p)() 这个指针的长度,是4个字节
兄弟看这个链接,里面我回复了你啊
我仅仅测试了void(base::*p)() 这个指针的长度,是4个字节