Memory.cpp 832 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. // SPDX-FileCopyrightText: 2021 Jorrit Rouwe
  2. // SPDX-License-Identifier: MIT
  3. #include <Jolt/Jolt.h>
  4. #include <Jolt/Core/Memory.h>
  5. JPH_SUPPRESS_WARNINGS_STD_BEGIN
  6. #include <cstdlib>
  7. JPH_SUPPRESS_WARNINGS_STD_END
  8. #include <stdlib.h>
  9. JPH_NAMESPACE_BEGIN
  10. void *AlignedAlloc(size_t inSize, size_t inAlignment)
  11. {
  12. #if defined(JPH_PLATFORM_WINDOWS)
  13. // Microsoft doesn't implement C++17 std::aligned_alloc
  14. return _aligned_malloc(inSize, inAlignment);
  15. #elif defined(JPH_PLATFORM_ANDROID)
  16. return memalign(inAlignment, AlignUp(inSize, inAlignment));
  17. #else
  18. return std::aligned_alloc(inAlignment, AlignUp(inSize, inAlignment));
  19. #endif
  20. }
  21. void AlignedFree(void *inBlock)
  22. {
  23. #if defined(JPH_PLATFORM_WINDOWS)
  24. _aligned_free(inBlock);
  25. #elif defined(JPH_PLATFORM_ANDROID)
  26. free(inBlock);
  27. #else
  28. std::free(inBlock);
  29. #endif
  30. }
  31. JPH_NAMESPACE_END