파일에 결과를 쓰는 데 사용되는 큰 c 코드 라이브러리가 있습니다. 나는 그것이 같은 C++ 프로그램에 플로트 * 배열을 통해 데이터를 반환하는 변환 등 (일정 파일 I/O 피하기 위해) :관리되는 C#에서 관리되지 않는 무료 C 코드 메모리
float* mgrib(...)
이것은 ++ 여기서 내가 할 수있는 "무료"메모리를 C에서 잘 작동합니다.
IntPtr pointer = mgrib(...);
float[] result = new float[ size ];
Marshal.Copy(pointer, result, 0, size);
Marshal.FreeCoTaskMem(pointer);
많은 분야가 함수에서 뽑아해야하기 때문에이 루프 내에 : 나는 통해 제대로 C 번호로 데이터를 얻을 수 있었다. 256 필드보다 작 으면 큰 효과가 있습니다. 그것이 더 많은 경우 경고없이 충돌합니다. 파일을 올바르게 실행 한 다음 다른 파일 (256 개 이상)을 실행하면 충돌이 발생합니다. 나는 CS 전문가가 아니지만 256은 우연의 일치 이상의 것 같습니다.
나는 어떤 통찰력을 주셔서 감사합니다. 감사.
과 같은 것을 사용하십시오. 실제로 라이브러리는 C 코드입니다. 그것은 malloc으로 할당되었습니다 (CoTaskMemAlloc를 C로 할당 할 수 있습니까?). FreeCoTaskMem이 온라인에서 읽은 것에서 malloc과 호환되지만, 다음과 같은 주제로 머리를 쓰고 있습니다. 응답 해 주셔서 감사합니다. – Anthony