jt2594838 commented on code in PR #527: URL: https://github.com/apache/tsfile/pull/527#discussion_r2176349259
########## cpp/src/common/allocator/mem_alloc.cc: ########## @@ -63,45 +63,41 @@ const char *g_mod_names[__LAST_MOD_ID] = { /* 27 */ "HASH_TABLE", }; -const uint32_t HEADER_SIZE_4B = 4; -const uint32_t HEADER_SIZE_8B = 8; +// Most modern CPUs (e.g., x86_64, Arm) support at least 8-byte alignment, +// and C++ mandates that alignof(std::max_align_t) reflects the strictest +// alignment requirement for built-in types (typically 8 or 16 bytes, especially +// with SIMD) + +// To ensure that the returned memory pointer from mem_alloc is properly aligned +// for any type, we standardize on an 8-byte header(HEADER_SIZE_8B). +// If the actual header content is smaller, additional padding is inserted +// automatically before the aligned payload to preserve alignment. +// constexpr uint32_t HEADER_SIZE_4B = 4; +constexpr size_t HEADER_PTR_SIZE = 8; +// Default alignment is 8 bytes, sufficient for basic types. +// If SIMD (e.g., SSE/AVX) is introduced later, increase ALIGNMENT to 16/32/64 +// as needed. +// constexpr size_t ALIGNMENT = alignof(std::max_align_t); +constexpr size_t ALIGNMENT = 8; Review Comment: Can we make them compilation options via macros? -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: notifications-unsubscr...@tsfile.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org