Redian新闻
>
Citi creditcard increase credit line
avatar
Citi creditcard increase credit line# Money - 海外理财
l*d
1
下面的结构体占多少字节?
// structure C
typedef struct structc_tag
{
char c;
double d;
int s;
} structc_t;
按照http://www.geeksforgeeks.org/archives/9705讲得,是24个字节,但我在ubuntu 10.10上编译运行的结果是16.难道gcc会优化空间,把char c和 int s放一起弄成8 bytes aligned,double d单独放一个8 bytes aligned的地址?
avatar
h*3
2
citi有网上选项升级credit line吗?
我现在credit已经超过了我的limit但是好像也没有被decline,是不是因为我实际
credit line已经超过了看到的credit limit了?我能手动升级吗?
avatar
p*2
3

应该不会。你是64位的系统吗?

【在 l******d 的大作中提到】
: 下面的结构体占多少字节?
: // structure C
: typedef struct structc_tag
: {
: char c;
: double d;
: int s;
: } structc_t;
: 按照http://www.geeksforgeeks.org/archives/9705讲得,是24个字节,但我在ubuntu 10.10上编译运行的结果是16.难道gcc会优化空间,把char c和 int s放一起弄成8 bytes aligned,double d单独放一个8 bytes aligned的地址?

avatar
s*g
4
有,但如果你不满足条件,也是可能看不到的
如果能看到,可以提,但也未必过。如果当场就过,是soft pull
avatar
l*d
5
32位的,装在vmware里。如果是64位的,应该bytes数比32位的更多才对

【在 p*****2 的大作中提到】
:
: 应该不会。你是64位的系统吗?

avatar
h*3
6
3q
avatar
p*2
7

32位的话,int是4个字节。

【在 l******d 的大作中提到】
: 32位的,装在vmware里。如果是64位的,应该bytes数比32位的更多才对
avatar
l*d
8
奇怪了,在win 7 64bit上vc编译运行结果确实是24

【在 p*****2 的大作中提到】
:
: 32位的话,int是4个字节。

avatar
c*p
9
#include
typedef struct structc_tag
{
char c;
double d;
int s;
} struct_t;
int main()
{
struct_t a;
printf("%x %x %x %d\n", &(a.c), &(a.d), &(a.s), sizeof(a));
return 0;
}
7f011690 7f011698 7f0116a0 24

【在 l******d 的大作中提到】
: 下面的结构体占多少字节?
: // structure C
: typedef struct structc_tag
: {
: char c;
: double d;
: int s;
: } structc_t;
: 按照http://www.geeksforgeeks.org/archives/9705讲得,是24个字节,但我在ubuntu 10.10上编译运行的结果是16.难道gcc会优化空间,把char c和 int s放一起弄成8 bytes aligned,double d单独放一个8 bytes aligned的地址?

avatar
c*p
10
64位也是4个字节吧?
今天刚试过。。。

【在 p*****2 的大作中提到】
:
: 32位的话,int是4个字节。

avatar
l*d
11
我在win7 64bit和64bit的linux上运行结果是24
在32bit的linux上都是16
不考虑bytes padding的话,在32bit机器上是13 bytes,但运行结果16bytes不知道是
怎么pad出来的

【在 p*****2 的大作中提到】
:
: 32位的话,int是4个字节。

avatar
p*2
12

不是呀。应该是8个字节。你怎么试的?所谓多少位就是指的int的位数

【在 c****p 的大作中提到】
: 64位也是4个字节吧?
: 今天刚试过。。。

avatar
p*2
13

那不就对了。64位上边int是8个字节。

【在 l******d 的大作中提到】
: 奇怪了,在win 7 64bit上vc编译运行结果确实是24
avatar
l*d
14
我的理解是
64位的机器上如果是编译32位的程序,int是4字节,要编成native 64bit的程序int才
是8字节。
但我不知道怎么编译native 64位的程序。好像vc和gcc都默认的编译32位程序,即使是
在64位的机器上。

【在 p*****2 的大作中提到】
:
: 那不就对了。64位上边int是8个字节。

avatar
p*2
15

你理解i应该没错。64位win支持32位应用。以前VC高级版本可以编译成64位,现在什么
情况就不清除了。

【在 l******d 的大作中提到】
: 我的理解是
: 64位的机器上如果是编译32位的程序,int是4字节,要编成native 64bit的程序int才
: 是8字节。
: 但我不知道怎么编译native 64位的程序。好像vc和gcc都默认的编译32位程序,即使是
: 在64位的机器上。

avatar
l*d
16
用你这个程序,一点不改,在虚拟机里的ubuntu 10.10 32bit运行结果是
bfdd9fb0 bfdd9fb4 bfdd9fbc 16

【在 c****p 的大作中提到】
: #include
: typedef struct structc_tag
: {
: char c;
: double d;
: int s;
: } struct_t;
: int main()
: {
: struct_t a;

avatar
p*2
17

32位是4个字节。所以不会出现13,要take整个字长

【在 l******d 的大作中提到】
: 我在win7 64bit和64bit的linux上运行结果是24
: 在32bit的linux上都是16
: 不考虑bytes padding的话,在32bit机器上是13 bytes,但运行结果16bytes不知道是
: 怎么pad出来的

avatar
c*p
18
是16没啥奇怪的吧

【在 l******d 的大作中提到】
: 用你这个程序,一点不改,在虚拟机里的ubuntu 10.10 32bit运行结果是
: bfdd9fb0 bfdd9fb4 bfdd9fbc 16

avatar
l*d
21
按帖子里的意思,4 bytes 还是 8 bytes aligned对单个sructc_t没有性能上的影响,
但在声明structc_t的array时会影响性能

【在 c****p 的大作中提到】
: 我猜是因为32位机上没必要把double按8字节对齐
avatar
c*p
22
会影响性能应该还是针对64位机说的,因为做成数组就有可能导致double只向4对齐
对于32位机来说,无论是向8对齐还是向4对齐,double都是要读两次。【 在 lwsOsgvd
(lwsOsgvd) 的大作中提到: 】
avatar
p*2
23

lwsOsgvd
对。

【在 c****p 的大作中提到】
: 会影响性能应该还是针对64位机说的,因为做成数组就有可能导致double只向4对齐
: 对于32位机来说,无论是向8对齐还是向4对齐,double都是要读两次。【 在 lwsOsgvd
: (lwsOsgvd) 的大作中提到: 】

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。