프로그래밍 공부

프로그래밍 700

카테고리 설명
  • 위 코드에서 ptr=NULL하지 않았고, 그럼으로인해 ptr에 남아있는 주소값이 임의의 메모리를 가리키게 되었음으로 유효하지 않는 메모리 주소를 가리키게 된다. 이를 Dangling Pointer 또는 Dangling Reference 라고 한다. 메모리를 해재 한 뒤. OS가 임의의 메모리공간으로 할당하여 사용하려고 할 때 주소값이 남아있음으로 코드 내에서 해당 주소로 접근이 가능해지기 때문에 심각한 보안 취약점으로 작용할 수 있다.

  • C와 C++의 메모리 동적할당을 알아보자. C에서 사용하는 메모리 동적할당은 다음과 같다. C언어에서는 malloc 과 calloc 그리고 realloc 을 사용하고, free를 통해서 동적할당된 변수를 날려줄 수 있다. 그러나 C언어에서의 동적할당은 free이후 메모리의 주소값이 들어있는 포인터를 NULL로 초기화 해주어야 했다. C++에서의 동적할당을 살펴보자. C++에서는 동적할당 시 C와 다르게 생성할 조건을 형변환 하지 않아도 자동으로 형변환 해주는 시스템을 가지고 있다. 다음을 살펴보자. delete 문을 사용하여 동적할당 된 포인터 변수를 초기화 해줄수 있고 따로 포인터변수를 NULL로 초기화 하지 않아도 된다. 그 외에도 해당되는 사이즈를 직접 초기화 해줄 수도 있다. new로 생성되는 동..

  • C++과 C는 배열 접근과 배열 생성방법이 조금씩 다르다. 예시를 살펴보자. 위의 예시와 같이, array 연산자를 사용하여 배열을 생성 할 수 있고, .at을 통해 접근이 가능하다. 위에 써놓은것 과 같이. at이 []보다 더 안정성이 높은데, 그 이유는,[]을 통해 접근하게되면, 범위를 벗어나도 접근이 가능하지만, .at으로 접근하게되면 범위를 벗어났을 시 밑과 같이 프로그램을 터트린다.

  • 시험 오답정리. 2. 다음 중 4byte 의 크기를 가지고 있는 자료형은? char long long float double short 4byte 크기의 자료형은 int, float, long 등이 있다. 여기선 flaot이 해당한다. 4444 5. 2Byte의 매모리에 23이 저장되는 bit 중 옳은 것은? 0101 1101 0001 0111 0000 0000 0110 1100 0000 0000 0101 1101 0000 0000 0001 0111 23을 2진수로 변환 시 0001 0111 그러나, 2byte = 16bit 임으로, 나머지 0으로 채움. 즉, 0000 0000 0001 0111 이다. 13. 다음 점프문중 반복중인 명령을 중단하고 조건식으로 다시 되돌아가는 명령어는 무엇입니까? cont..

  • C++에서도 메크로 펑션을 사용할 수 있다. #define에서 매크로를 선언하여 사용하는것 을 이야기 한다. 매크로 함수로 선언하면 CODE영역에서 함수를 저장하여 연산하기에 더 빠른 연산 처리가 가능하다. 코드 영역은 프로그램이 실행되기 전 코드 데이터가 들어가는 영역이다. 코드 예시와 실행 결과를 보자. 다음과 같은 방식으로 define을 사용하여 연산을 하는 펑션을 구축 가능하다. 그러나, 매크로 펑션은 입력된 매크로의 입력을 다음에 입력된 함수대로 변경되는것 이기에 괄호가 없어서 사용상 주의가 필요하다. 주의사항은 다음과 같다. 즉, 매크로로 변환하여 사용하는 것은 괄호가 들어가지 않아. 정상펑션 대로 사용하면, 1+2의 결과가 나온 3이 다음 1+2의 결과와 곱해져 9가 나와야하는것이, 1 + ..

  • c++에서는 iostream을 사용한다. 이것은 input_output_stream 이라는 입력과 출력의 함수를 사용하겠다. 라는 뜻 이다. C++에서는 C에서 사용하는.h같은 식으로 붙이지 않고, c에만 있는 함수를 사용하고 싶다면, c를 붙이고 사용하던 함수를 호출하면 된다. 예시를 보자.+ 출력문은 다음과 같다. 이는 출력문을 cout에 일정 문자열을 흘려보낸다 라는 뜻 이다. 위와 같이 사용할 수 있다. 변수를 선언하고 해당 변수를 출력할 수 도있다. std::cout로 데이터를 입출력 할 수 있다. 이것은 C++에서의 다양한 방법으로 입출력이 조정 가능하다. 위와 같이. 다양한 방법으로 입출력 변수를 조정할 수 있다. true로 나타낼 수 있고, false로 출력할 수 있고, 이것을 키고 끄면서..