although I am no expert on alignment I believe the char buffer should be some kind of aligned storage