의 안전하지 않은 코드 동작을 모호하게 함 최근에 일부 트리를 작성하여 안전하지 않은 코드를 사용하려고합니다. 마지막으로 나는 안전하지 않고 모든 할 수 있지만,이 코드의 일부 모호한 (나를 위해) 장소 찾기 (나는 모든 논리를 삭제 짧은 코드를 그래서 모든 코드는 매우 의미가 보이는) :C#
public static void Main() {
EqClass a = new EqClass();
a.AddElement(2, new record(3)); // *place1*
...
}
unsafe struct node {
public node* next;
public record Value;
public node(record value) {
this = new node();
this.Value = value;
}
}
struct record {
public int a;
public record(int a) {
this.a = a;
}
}
unsafe class EqClass {
node*[] last = new node*[3];
public void AddElement(int classIndex, record element) {
node a = new node(element);
node* newNode = &a;
last[classIndex]->next = newNode; // *place2*
}
}
place2 모두에서하는 모든 권리이지만, 메소드 AddElement
이 끝나면 last [2] (우리가 요소를 넣는 곳)에 예기치 않게 쓰레기가 나옵니다. 하지만 왜? 미리 감사드립니다.
왜 관리 코드 대신 안전하지 않은 코드를 사용하려고합니까? – Servy
Psst : 클래스를 사용하십시오. – Ryan
예, 클래스 및 관리 코드를 사용하여 마침내 수행했지만이 코드가 작동하지 않는 이유는 매우 흥미 롭습니다. 나는 실수를 발견하지 못했습니다 ... –