'language/debug'에 해당되는 글 3건

error C4703

language/debug 2016. 8. 7. 16:53
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

BTreeNode * RemoveLeftSubTree(BTreeNode * bt)

{

                  BTreeNode * delNode;

 

                  if(bt != NULL) {

                                   delNode = bt->left;

                                   bt->left = NULL;

                  }

                  return delNode;

}

 

BTreeNode * RemoveRightSubTree(BTreeNode * bt)

{

                  BTreeNode * delNode;

 

                  if(bt != NULL) {

                                   delNode = bt->right;

                                   bt->right = NULL;

                  }

                  return delNode;

}


error C4703: 초기화되지 않았을 수 있는 로컬 포인터 변수 'delNode'이(가) 사용되었습니다.

(error C4703: potentially uninitialized local pointer valibale 'delNode' was used)



위의 경우, 디버그-> 프로젝트 속성 -> 일반 -> C/C++ -> SDL 검사 속성을 '아니오'로 변경하면 해결된다.

(Debug -> [Project Name] Properties -> General -> C/C++ -> SDL Check)


혹은, 


위 error는 포인터 변수를 초기화해주지 않아서 발생하므로, 


                  BTreeNode * delNode NULL;



위와 같이 해당하는 코드에 null값을 대입해주면 문제가 해결된다.






'language > debug' 카테고리의 다른 글

runtime check failure #2  (0) 2016.07.18
_CRT_SECURE_NO_WARNINGS  (0) 2016.05.07
블로그 이미지

saylin

,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

runtime check failure #2 - stack around the variable 'XXX' was corrupted



#include <iostream>

using namespace std;

 

void drawrect();

 

int main(){

                  int cases;

                  cin >> cases;

 

                  while(cases--){

                                   drawrect();

                  }

                  system("pause");

                  return 0;

}

 

void drawrect()

{

                  int point[3][2];

                  int x=0, y=0;

                 

                                   for(int i=1; i<=3; i++){

                                                     cin >> point[i][1] >> point[i][2];

                                   }

                                   for(int i=2; i<=3; i++){

                                                     if(point[1][1] == point[i][1]) x = point[5-i][1]; }

                                   if(x==0) x=point[1][1];

                                  

                                   for(int i=2; i<=3; i++){

                                                     if(point[1][2] == point[i][2]) y = point[5-i][2]; }

                                   if(y==0) y=point[1][2];

 

                                   cout<< x << " " << y <<endl;

 

}



위와 같은 코드를 컴파일 및 실행 시, 코드 자체는 문제가 없으나 실행 중간에 runtime check failure #2가 발생한다.


정확한 이유는 모르겠으나, 배열크기를 늘려주면 해결할 수 있다는 말에 따라


                  int point[3][2]; -> point[4][3];


으로 변경하니 에러 문제는 해결되었다.



'language > debug' 카테고리의 다른 글

error C4703  (0) 2016.08.07
_CRT_SECURE_NO_WARNINGS  (0) 2016.05.07
블로그 이미지

saylin

,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

(Visual C++ 환경에서의) error C4996: _CRT_SECURE_NO_WARNINGS 해결 방법


C언어에서 사용하던 함수들을 C++에서도 사용할 수 있지만, 

C++ 컴파일러는 보안 관련 문제로 권장하지 않는다는 다음과 같은 에러메세지를 출력하면서 컴파일을 진행하지 않는다.


1>c:\users\david\documents\visual studio 2015\projects\assingshallowcopyerror\assingshallowcopyerror\소스.cpp(18): error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

1>  c:\program files (x86)\windows kits\10\include\10.0.10240.0\ucrt\string.h(119): note: 'strcpy' 선언을 참조하십시오.


이를 해결하기 위해서는 


프로젝트(P)

ㄴ속성

ㄴ구성 속성

ㄴC/C++

ㄴ전처리기

ㄴ전처리기 정의


전처리기 정의에 _CRT_SECURE_NO_WARNINGS를 입력하면 더 이상 에러메세지와 함께 컴파일이 되지 않는 현상을 해결할 수 있다.



또는, 소스코드 맨 윗부분에 


#define _CRT_SECURE_NO_WARNINGS


이 코드를 입력하면 에러메세지가 출력되지 않는다.



'language > debug' 카테고리의 다른 글

error C4703  (0) 2016.08.07
runtime check failure #2  (0) 2016.07.18
블로그 이미지

saylin

,