use posix_memalign on linux, not valloc