C#에서 Knuth-Morris-Pratt 알고리즘을 구현하려고합니다.C 코드를 안전하지 않은 C#으로 이식 할 때 NullReference?
정규 표현식에 대해 말하지 않고 C#에서 메모리 작업을하지 마십시오. 이 항목의 목적은 C# 기능이 실제로 유용하지는 않지만 C#에서 포인터를 사용하는 작업과 정확하게 이러한 기능을 배우는 메모리 작업에 관한 내용이기 때문입니다.
나
는 C# http://ideone.com/Ck0G0이
가 나는 순수한 C의 버전에 문제가 없다, 그것은 문제없이 잘 작동하면 C# 및 순수 C. 모두 구현을 보여 드리죠 ,하지만 C# 버전이 아닙니다.
I는이 라인 C에서 문제가있다 : I가 NullReferenceException이 포획있어
int*[] d = new int*[M * sizeof(int)];
*d[0] = 0;
0 값으로 설정하여 처리를하고 * D [0]. 내가이 참조를 읽고
:
http://msdn.microsoft.com/en-en/library/system.nullreferenceexception.aspx
null 객체 참조 역 참조에 대한 시도가있을 때 throw되는 예외입니다.
나는 왜이 물건이 내 C# 코드에서 null인지 전혀 이해하지 못합니까?
나는 int [] 배열에 * d 포인터를 정의하고 이것을 새로운 [] 연산자로 메모리에 할당 했으므로 메모리가 이미 할당 된 경우 null 참조를 역 참조합니다. ?
또한 C#에서 명시 적으로 포인터를 삭제하는 방법에 대한 질문이 있습니다.
나는이 키워드를 사용하지 않고이 원한다면 그것이 이을 고정 함께 할 수 있다는 것을 알고 있지만?
내가 기억하기로는 Dispose() 메서드를 호출해야하지만 (이 메서드를 찾지 못했지만 * d) null로 설정하고 GC.Collect()를 호출해야합니다. 이 방법이 올바른 방법입니까?
감사합니다,
베스트 감사합니다!
이 연습의 요점은 무엇입니까? –
모든 지긋 지긋한 대화방에서 스팸 메일을 보내지 마십시오. 스팸으로 간주되며 사람들이 여러분을 도우 려하지 않을 것입니다. – Sir
@ C#에서 메모리가있는 bryan-crosby 수동 작업 (원하는 경우 함수에서 객체를 삭제하고 싶지만 GC가 수행 할 때 객체를 삭제하지 않음), 포인터로 작업하고 C에서 입력하십시오. – Secret