diff --git a/CsLatest/Utilities/UnsafeUtility.cs b/CsLatest/Utilities/UnsafeUtility.cs index 4f9f8c0..855bf24 100644 --- a/CsLatest/Utilities/UnsafeUtility.cs +++ b/CsLatest/Utilities/UnsafeUtility.cs @@ -15,5 +15,20 @@ public static class UnsafeUtility { return (byte*)Unsafe.AsPointer(ref Unsafe.AsRef(in MemoryMarshal.AsRef(utf8StringLiteral))); } + + /// + /// Gets the alignment of an unmanaged type. + /// See: https://stackoverflow.com/questions/77212211/how-do-i-find-the-alignment-of-a-struct-in-c + /// + public static int AlignmentOf() where T : unmanaged + { + return (int)Marshal.OffsetOf>(nameof(AlignmentHelper.Target)); + } + + internal struct AlignmentHelper where T : unmanaged + { + public byte Padding; + public T Target; + } } #endif