다른 언어의 함수 (예 : Fortran 95)를 GC가있는 언어에서 반복적으로 호출한다고 상상해보십시오. Fortran 함수는 호출자 언어에서 참조되지 않은 쓰레기로 볼 수있는 호출 사이에 메모리에 할당 된 것을 남겨 둡니다.가비지 수집기가 다른 언어로 작성된 함수에 의해 "가비지"에 도달 할 수 있습니까?
호출자 언어의 GC가 Fortran에 할당 된 메모리에 액세스 할 수 있으며 쓰레기로 간주하고 무료로 사용할 수 있습니까?
나는 이 될 것 같지 않다.. 포트란 함수에 의해 할당 된 메모리는 GC가 관리하는 메모리와 분리 된 자체 메모리 관리를 가져야하지만, 누구나 확인할 수 있다면 행복 할 것이다.
왜 필요합니까? 전술 한 바와 같이
(누군가가 관심이있는 경우), I는 자체 메모리를 할당 F95에서 함수를 작성해야 여러 번이라고하며 통화 사이의 할당 된 메모리에 대한 참조를 유지해야합니다. 문제는 Fortran 포인터가 외부 세계와 호환되지 않기 때문에 Fortran에서 'void *'로 전달할 수 없다는 것입니다. 따라서 Fortran 함수는 포인터를 포인터로 저장하지 않고 외부 세계의 정수 배열로 캐스팅합니다 (예 :). 그러나 GC가 언제든지 Fortran에서 메모리를 방해 할 수 있으면 참조가 정수 배열에 저장되어 있고 Fortran에서 할당 된 메모리를 해제하려는 것이 좋지 않을 수 있습니다.
관리되지 않는 언어를 사용하면 더 좋거나 나쁘게 생각하면 메모리 (할당) 할당과 관련하여 스스로 결정할 수 있습니다. –
문제는 기능의 사용자가 어떤 언어를 사용할 지 모르겠다는 것입니다. 그러므로 나는 거의 모든 것을 위해 작동하는 해결책을 제시해야합니다. – Jan