본문 바로가기

Program31

[MFC / C++] Cognex In-Sight Wafer Install error (Error 1935. assembly component) [ActiveX 컨트롤 에러]MFC에서 View에 특정 ActiveX 컨트롤을 당겨와서 사용하는 경우 해당 프로그램이 컴퓨터에 설치되어 있지 않다면 Visual Studio로 해당 소스를 오픈할 때 컨트롤 에러가 발생합니다.'이 컴퓨터에 ActiveX 컨트롤이 등록되지 않았습니다. 컨트롤을 등록한 다음 다시 시도하십시오.'해당 에러는 불러와지지 않는 View에 어떤 ActiveX를 당겨와서 사용하는지 알아야 오픈이 가능하기 때문에 개발자는 반드시 정보를 백업하며 개발해야 합니다.만약 백업된 정보가 없다면 Debug를 통해 어떤 다이얼로그를 오픈할 때 에러가 발생하는지 찾아야 합니다. 필자는 Cognex In-Sight 프로그램이 설치되지 않아 발생했습니다. 그러나 설치 도중 다른 에러를 발견했습니다. [.. 2024. 6. 2.
[MFC / C++] 메모리 누수 확인하고 조치하기 / CPtrList 메모리 leak 현상 해제하는 방법 / normal block at error [Memory leak현상]Memory leak이란 프로그램에서 나 여기 쓸 거라고 공간을 확보해 놓고 사실상 명의만 바꿔놓고 사용하지 않는 공간이 되어버리는 걸 의미합니다. 운영체제 입장에서는 안 쓰는 걸 알고 있지만 언제 사용될지 모르는 공간이기 때문에 명의를 임의로 변경할 수 없는 상태로 계속 놀고 있는 공간이 되어버리는 것이지요. 지난번 포스팅한 배열 선언에서도 leak이 발생할 수 있지만 앞으로 사용하는 수많은 포인터 세계에서도 leak이 발생할 수 있음을 고려해야 합니다. (지난 포스팅 : Delete 함수와 Delete[] 함수의 차이점을 알고 Memory leak현상 조치하기) C++은 C#과 다르게 컴포넌트의 선언이 대화상자를 통해 구성되기 때문에 자동으로 바인딩이 되는 구조인 것 같습니.. 2024. 5. 31.
[C++] 배열 new를 사용해 선언했지만 스칼라 delete로 삭제했습니다. 발생 이유와 해결 방법 [Memory leak현상]C++에서는 C#에서와 달리 애플리케이션에서 주기적으로 가비지컬렉터(GC.Collect)에 설정된 배열에 데이터가 없더라도 이미 사용 중인 메모리 공간으로 인식하여 프로그램을 종료해도 메모리가 해제되지 않는 상황이 발생합니다 어떻게 보면 메모리를 딱 필요한 만큼만 사용하기 때문에 효율적이고 빠르다고 생각할 수 있으나 개발자 입장에서는 매우 귀찮은 일이 아닐 수 없습니다.메모리가 해제되지 않으면 PC를 재부팅하지 않는 이상 메모리 주소값이 동결되어버리는 leak현상이 발생되고 해당 현상이 반복되면 시스템 효율에 큰 이상점을 발생시키게 되고 결과적으로 프로그램의 성능을 떨어뜨리는 역할을 하게 됩니다. 해당 현상이 발생되지 않도록 선언된 메모리 영역을 해제시켜줘야 하는데요. 그럴때 .. 2024. 5. 29.
[C++] Error 'scanf': This function or variable may be unsafe 발생 해결 방법 [Scanf 사용 에러 발생]상위 Visualstudio 에서 빌드를 할 경우 표준라이브러리 Scanf나 Gets, atoi 함수를 사용하게 되면 해당 문구가 출력되는 경우가 있습니다. 빌드나 디버그가 되지 않아 컴파일이 불가능합니다. 아래와 같이 에러메시지가 발생되며 빌드 자체가 안되게 됩니다.'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.메모리의 안정성 때문에 VS에서 자체적으로 막아놓은 것으로 보입니다. SDL (Security Development Life.. 2024. 5. 23.