When you are readfrom O_DIRECTfd, "alignment of the user buffer and file offset must be a multiple of the size of the logical block of the file system" (quoted from the openman page ) on Linux. Other environments may have different restrictions on this, and in fact it depends on the file system.
This will not be the case with newgeneral (unless you are lucky).
posix_memalign, , (BLOCK_SIZE + BUFSIZE) .
new, - , , , .
., , LKML Notes .