Advertisement
Guest User

Untitled

a guest
Sep 24th, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.72 KB | None | 0 0
  1. #define char_cast(x) static_cast<char*>(x)
  2. #define move_addr(x, value) static_cast<void*>((char_cast(x) + value))
  3. #define size_cast(x) static_cast<size_t*>(x)
  4.  
  5. void cln_mem(void *ptr, size_t len)
  6. {
  7. constexpr size_t size = siezof(size_t); // маска по размеру разрядности. size_t имеет разный размер в зависимости от архитектуры - то что надо. constexpr не создает переменную на стеке.
  8.  
  9. while(len > size) {
  10. *size_cast(ptr) = 0;
  11. len -= size;
  12. ptr = move_addr(ptr, size);
  13. }
  14.  
  15. while(len)
  16. {
  17. *char_cast(ptr) = 0;
  18. ptr = move_addr(ptr, 1);
  19. len--;
  20. }
  21. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement