«Выровненный» указатель по определению означает, что числовое значение указателя делится равномерно на N (где N - желаемое выравнивание). Чтобы проверить это, приведите указатель к целому числу подходящего размера, возьмите модуль N и проверьте, равен ли результат нулю. В коде:
bool is_aligned(void *p, int N)
{
return (int)p % N == 0;
}
Если вы хотите проверить значение указателя вручную, просто посмотрите на шестнадцатеричное представление указателя и посмотрите, заканчивается ли оно требуемым числом 0 битов. Выровненное по 16 байтов значение указателя всегда заканчивается, например, четырьмя нулевыми битами.