#include <cstdio>    // for printf.
#include <cstddef>	// for size.
#include <cstdint>	// for uintptr_t.
using namespace std;

void *alignment(void *p, std::size_t align_size)
{
	std::uintptr_t i = reinterpret_cast<std::uintptr_t>(p);
	i = (i + (align_size - 1)) / align_size * align_size;

	return reinterpret_cast<void *>(i);
}

int main()
{
	void *p = reinterpret_cast<void *>(33);
	std::printf("%p\n", p);

	auto *p32 = alignment(p, 32);
	std::printf("%p\n", p32);

	getchar();
}

