2012-06-20 16 views
4

여러 응용 프로그램에서 사용할 수 있도록 코드 라이브러리를 작성하고 있습니다. 일부 코드는 이미지 및 기존 메시지 형식 (C++에서 변환 됨)을 처리하므로 안전하지 않은 코드가 필요합니다.C# 안전하지 않은/안전하지 않은 라이브러리

나는 일반적으로 내가해야보다 더 이상 같은 라이브러리 어셈블리에서 안전하지 않은 안전한 코드를 혼합하지해야하는 이유 모든 이유를?

그것을 다른 방법을 넣으려면 : 나는 순전히 안전한 라이브러리를 유지하고 다른 라이브러리/라이브러리에 안전하지 않은 코드를 수집해야합니까? 내가 거기에 '안전하지 않은'라이브러리하지만 이러한 기능 때문에 고려해야 할 신뢰 문제가 내 대부분의 응용 프로그램에 중요한 있음을 이해할

, 정말 중요한가? 내 코드 (안전 코드 &)가 안전하지 않거나 신뢰할 수 없거나 신뢰되지 않아 내 애플리케이션이 실행되지 않습니다. 아니면 요점을 놓치고 있습니까?

+0

"안전하지 않은 코드가 필요합니다."나는 아직 그렇게 확신하지는 않을 것입니다. 조금 밖에 쓰지 않는 생각으로 오래된 C++ 코드를 안전한 C# 코드로 변환 할 수 있습니다. – Polity

+0

참. 반면에 나는 C/C++ 코드의 경우 암호화와 데이터 포맷팅을하는 경우가 너무 많아서 엉망이되지 않을 것입니다. 이 코드는 포인터 처리에 크게 의존하므로 C#으로 변환 할 때 최소한의 변경으로 포트에 안전하지 않은 코드 영역으로 이동해야합니다. FWIW 메모리 스트림에서 바이트 배열을 읽는 것은 메모리의 데이터를 단계별로 처리하는 꽤 좋은 방법이라고 생각합니다. –

+0

또한 비트 맵에서 픽셀 데이터를 직접 처리 할 때 성능 향상을 위해 픽셀 데이터를 BitmapInfo 개체로 가져오고 안전하지 않은 코드의 포인터를 통해 픽셀을 단계별로 안내하는 것이 좋습니다. 어쨌든 그것은 내가 지금 가지고있는 코드입니다. 어쩌면 어느 날 안전한 방법으로 다시 구현할 시간을 갖게 될 것입니다 ... –

답변

4
당신은 당신이 필요 안전한 코드 개발, 그러나의 당신이 안전하지 않은 코드 : 당신이 할당 해제 잊는의 당신이 위험을 안전하지 않은 코드를 실행 코드의 부분에서

를 사용하는 좋은 이유가 있다고 가정 할 수있는 이론적으로

기억력 등등 ... 그래서 당신이 잘 기억을 관리한다면 당신은 문제가 없어야합니다. COM + dll을 사용하는 C# 프로젝트가 있으면 항상 그렇게하고 있습니다. 모든 코드를 소유하고 있기 때문에 자신의 사례가 더 낫습니다.이를 감지 할 수 있으면 메모리 누출을 수정할 수 있습니다.

별도의 라이브러리에

모든 안전하지 않은 코드를 수집하는 경우

당신이 DLL이 실행 로그를에 실패한 것을 볼 경우 당신은 미래
  • 의 새로운 안전 라이브러리를 생성 할 수 있습니다
    • 문제의 원인을 쉽게 분리 할 수 ​​있습니다.

    CONS 코드의

    • 최악의 가독성 당신은 자연스러운 방법으로 안전/안전하지 않은 코드를 분리해야합니다.

  • 그래서 정직 결정은 당신입니다 수 있습니다. 만약 내가 당신이라면, 안전하지 않은 코드를 다른 프로젝트로 분리하여 필요할 때 안전 코드로 대체 할 수 있습니다.