peakzhang 发表于 2007-12-24 23:32:24

请教ACE_CDR的问题

请问一下ACE_CDR::MAX_ALIGNMENT到底是干嘛用的??

peakzhang 发表于 2007-12-24 23:32:33

最多的对齐字节数,32位计算机上为4

peakzhang 发表于 2007-12-24 23:32:48

你给的连接我已经看过了,但是没有解决我说的问题。

我发现的问题是:

在logging_client.cpp的14行有这么一句:ACE_OutputCDR header(ACE_CDR::MAX_ALIGNMENT + 8);

1.可以很明显的看出enum MAX_ALIGNMENT= 8的;

2.跟踪进入CDR_Stream.cpp,可以看到构造过程中有一行是:

:start_ ((size ? size : (size_t) ACE_CDR::DEFAULT_BUFSIZE) + ACE_CDR::MAX_ALIGNMENT,

可以看到,这里又加了一个ACE_CDR::MAX_ALIGNMENT

我现在存在的问题是:

1.为什么要加两次ACE_CDR::MAX_ALIGNMENT?

2.ACE_CDR::MAX_ALIGNMENT到底加了有什么用?

peakzhang 发表于 2007-12-24 23:32:58

由于字节对齐会浪费一些空间,加ACE_CDR::MAX_ALIGNMENT是为了预留空间。个人认为不需要加两次,ACE_OutputCDR header(8);足够了
页: [1]
查看完整版本: 请教ACE_CDR的问题