임의 유형의 배열의 첫 번째 요소의 메모리 주소를 가져와야합니다.이 배열은 Object 유형으로 저장됩니다. 예를 들어 배열은 double [] 또는 int [] 일 수 있지만 코드에서는 Object로 입력됩니다.객체로 저장된 배열의 첫 번째 요소 주소 얻기
알려진 유형의 배열 주소를 얻는 것은 간단하지만 C#에서는 개체의 주소를 가져올 수 없습니다. 배열을 저장하는 데 사용할 수 있고 메모리 주소를보다 쉽게 얻을 수있는 유형 (Object가 아닌)이 있습니까? 또는 Interop/Reflection을 사용하여 중간 데이터 복사본이 없어도 직접 주소에 액세스 할 수있는 방법이 있습니까?
두 번째 줄에는 double []가 개체로 저장되어 있습니다. 그리고 fixed() 줄에서 o의 주소를 얻으 려한다는 것을 알아 채십시오. o는 C#에서는 허용되지 않습니다.
미리 감사드립니다.
int len=100;
object o = new double [len];
unsafe
{
fixed(int*ptr=&o)
for (int index = 0; index < len; index++)
{
// access data directly to copy it, etc...
}
}
왜이 작업을 수행하려고합니까? –
이것은 정확히 질문에 대답하지 않으므로 (주석이므로), 'Array' 유형의 참조를 선언하고'Array' 클래스를 사용하여 원하는 대부분의 것을 할 수 있습니다 (예 :'Array.Copy()'. – phoog
@Robert : DirectCompute 작업과 관련된 몇 가지 작업을 자동화하고 싶습니다. 데이터를 앞뒤로 복사하는 자동화 된 개체를 사용하여 CPU 구조체 배열을 GPU 버퍼에 바인딩하고 중복 코드 양을 줄이려고합니다. –