fork download
  1. #include <cstdio> // for printf.
  2. #include <cstddef> // for size.
  3. #include <cstdint> // for uintptr_t.
  4. using namespace std;
  5.  
  6. void *alignment(void *p, std::size_t align_size)
  7. {
  8. std::uintptr_t i = reinterpret_cast<std::uintptr_t>(p);
  9. i = (i + (align_size - 1)) / align_size * align_size;
  10.  
  11. return reinterpret_cast<void *>(i);
  12. }
  13.  
  14. int main()
  15. {
  16. void *p = reinterpret_cast<void *>(33);
  17. std::printf("%p\n", p);
  18.  
  19. auto *p32 = alignment(p, 32);
  20. std::printf("%p\n", p32);
  21.  
  22. getchar();
  23. }
  24.  
  25.  
Success #stdin #stdout 0s 2900KB
stdin
Standard input is empty
stdout
0x21
0x40