# GetUnsafeReadOnlyPtr

> Gets a pointer to the memory buffer of a NativeArray<T> or NativeArray<T>.ReadOnly.

## Definition

* **Type:** Method
* **Namespace:** [Unity.Collections.LowLevel.Unsafe](/engine/6000.7/script-reference/unity/collections/lowlevel/unsafe.md)
* **Assembly:** UnityEngine.ManagedKernelModule

## GetUnsafeReadOnlyPtr\<T>(NativeArray\<T>)

Gets a pointer to the memory buffer of a [NativeArray\<T>](/engine/6000.7/script-reference/unity/collections/nativearray1.md) or [NativeArray\<T>.ReadOnly](/engine/6000.7/script-reference/unity/collections/nativearray1/readonly.md).

```csharp
public static void* GetUnsafeReadOnlyPtr<T>(this NativeArray<T> nativeArray) where T : struct
```

### Parameters

**** (\[NativeArray\<T>]\(/engine/6000.7/script-reference/unity/collections/nativearray1)): The NativeArray to check.

### Returns

| Type                                                         | Description                                   |
| ------------------------------------------------------------ | --------------------------------------------- |
| [void\*](https://learn.microsoft.com/dotnet/api/system.void) | The memory buffer pointer of the NativeArray. |

### Remarks

When ENABLE\_UNITY\_COLLECTIONS\_CHECKS is set (which is always the case in the Editor, but never in a built player), this method checks that the `AtomicSafetyHandle` associated with the NativeContainer can be read from and isn't written to from another thread. If it can't be read, a InvalidOperationException is raised. While you can write to the returned pointer, this is generally unsafe. When this method call succeeds, you're only guaranteed that reading from this pointer is safe. Writing to this pointer might lead to race conditions and crashes later during program execution.

## GetUnsafeReadOnlyPtr\<T>(ReadOnly)

Gets a pointer to the memory buffer of a [NativeArray\<T>](/engine/6000.7/script-reference/unity/collections/nativearray1.md) or [NativeArray\<T>.ReadOnly](/engine/6000.7/script-reference/unity/collections/nativearray1/readonly.md).

```csharp
public static void* GetUnsafeReadOnlyPtr<T>(this NativeArray<T>.ReadOnly nativeArray) where T : struct
```

### Parameters

**** (\[ReadOnly]\(/engine/6000.7/script-reference/unity/collections/nativearray1/readonly)): The NativeArray to check.

### Returns

| Type                                                         | Description                                   |
| ------------------------------------------------------------ | --------------------------------------------- |
| [void\*](https://learn.microsoft.com/dotnet/api/system.void) | The memory buffer pointer of the NativeArray. |

### Remarks

When ENABLE\_UNITY\_COLLECTIONS\_CHECKS is set (which is always the case in the Editor, but never in a built player), this method checks that the `AtomicSafetyHandle` associated with the NativeContainer can be read from and isn't written to from another thread. If it can't be read, a InvalidOperationException is raised. While you can write to the returned pointer, this is generally unsafe. When this method call succeeds, you're only guaranteed that reading from this pointer is safe. Writing to this pointer might lead to race conditions and crashes later during program execution.
