C언어/C언어 자료실11 함수 호출 스택 프레임에서 메모리 보호를 위한 카나리(Canary) 지난 3월 26일에 운영체제 스터디 중 함수 호출 스택 프레임을 살펴보는 발표가 있었습니다.당시에 이해가 되지 않고 넘어간 질문이 있었는데, 유투브를 우연히 보다가 해답을 알게 되었네요..! 스택 프레임에서 변수 메모리 값 앞 뒤에 cc cc cc cc 4바이트로 넣어져 있는 걸 확인할 수 있습니다.어셈블리어 코드에서도 MOV eax, CCCCCC , mov eax, dword ptr ss:[ebp+8] , mov eax, dword ptr ss:[ebp-8] 으로 넣어주는 걸 확인할 수 있습니다.이를 '카나리(Canary)', '카나리 비트' 라고 합니다.메모리 보호를 위한 값이라고 하는데요,해당 값이 '오버 플로우' 또는 '언더 플로우'로 수정이 되면 손상되었다고 판단한다고 합니다.이를 판단하는 (.. C언어/C언어 자료실 2024. 5. 14. C언어 포인터로 문자열 제어하기 코드 개요본 코드는 C언어 문자열을 포인터로 제어해보는 코드입니다.입력받은 문자열을 모두 대문자, 소문자로 만들거나 문자열을 거꾸로 만들어주는 프로그램입니다. 작업 환경처음에는 Mac OS X 환경에서 코드를 작성하고 테스트하였습니다.Windows의 Visual Studio 2017 IDE로 빌드 결과 문자열 리터럴 부분에서 타입 오류가 났습니다.그래서, myStrCopy(char*, char*) 함수의 시그니쳐를 myStrCopy(char*, const char*) 으로 변경하였습니다. 디버그시 scanf의 보안 이슈 알림을 중지하려고 소스 코드 상단에 _CRT_NO_SECURE_WARNINGS 매크로 넣었습니다. 원본 질문본 질문은 N사의 지식인에 올라온 질문입니다. 원본 질문.. C언어/C언어 자료실 2019. 4. 9. C언어 입력 버퍼 초기화 방법들 입력 버퍼 문제는 문자 형식을 받을 때 일어난다.입력 버퍼에 남아있는 문자 때문에, 원하는 동작이 일어나지 않는다.대개 엔터키의 잔여물인, 라인 피드(LF, 아스키코드 10)다. 많은 초보자들이 흔히 실수하는 것 중 하나다.C언어를 입문한 사람들에게는 도대체 알아챌 수 없는 오류다. 다음과 같이 입력 버퍼를 없앨 수 있다. 12345678910111213141516#include int main(void) { char a; while (1) { scanf("%c", &a); printf("%c %d\n", a, a); if (a == 'q') { break; } } return 0;} Colored by Color Scriptercs 실행결과는 다음과 같다. 1234567~/Desktop > ./main.. C언어/C언어 자료실 2018. 9. 4. [알고리즘] C언어 간단한 알고리즘 문제 며칠 전에 C언어 과제를 대신 해줬는데, 단순하지만 꽤 재밌었다.문제는 다음과 같다. 1번 문제주사위 두 개를 36,000번 던져서 나오는 모든 경우의 수를 계산하는 프로그램을 작성하세요.주사위 각각은 1부터 6까지의 정수 값을 표시할 수 있으므로 합계는 2부터 12까지입니다.7이 나올 확률이 가장 크고, 2와 12가 나올 확률이 가장 적습니다.주사위 2개를 던지는 과정을 수행하기 위해 rand() 함수를 각각 사용합니다. [ 아래의 출력 값과 유사한 값이 출력되어야 합니다. ] 12345678910111213Output : 2 : 1026 (0.028500) 3 : 2023 (0.056194) 4 : 2988 (0.083000) 5 : 4086 (0.113500) 6 : 5018 (0.139389) 7.. C언어/C언어 자료실 2018. 6. 7. [자료구조 과제] 큐 대기줄 시뮬레이션 1. 실행 결과 [현재 시각 알림]현재시각 : 1분 [고객 알림]고객 번호 : 0번 고객님들어온 시간 : 1분서비스 시간 : 3분고객0 : 1번 서버에 줄이 0명으로 제일 적네. 저기로 가야겠다.==================================[고객 알림]고객 번호 : 1번 고객님들어온 시간 : 1분서비스 시간 : 5분고객1 : 2번 서버에 줄이 0명으로 제일 적네. 저기로 가야겠다.==================================[1번 서버 현황][1번 서버님 서비스 시작]고객 번호 : 0번 고객님서비스 시작 시간 : 1분대기시간 : 0분================================== [2번 서버 현황][2번 서버님 서비스 시작]고객 번호 : 1번 고객님서비스 시.. C언어/C언어 자료실 2018. 5. 30. 내림차순 정렬, 최댓값 찾기 시험 끝난 금요일, 출석점수가 않는 수업 하나밖에 없어서 자체휴강했다. 시험 기간에 쌓인 피로로 아침 밥만 먹고 오후까지 잠을 잤다. 독서도 할겸 5월 달 계획도 세울겸 해서 집 앞 카페로 출발하던 차에, 후배가 C언어 수업시간에, 수업 끝날때까지 제출할 과제좀 해달라 해서 급히 카페에서 코드를 짰다. 내림차순 정렬1234567891011121314151617181920212223242526272829303132333435363738#include #include int descending(const void* a, const void* b){ if(*(int *)a *(int *)b) return -1; else return 0;} int main(int argc, char* argv[]) { int .. C언어/C언어 자료실 2018. 4. 27. C언어 간단한 길찾기 알고리즘 2차원 배열과, 스택 자료구조 역할을 하는 1차원 배열을 이용한 길찾기 알고리즘입니다. C언어 멘토링 3주차 금요일 실습 때 사용할 예제 파일 입니다. 소스 코드 주소 : http://colorscripter.com/s/YdCaRJO 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125.. C언어/C언어 자료실 2018. 4. 11. [VisualStudio C/C++ 오류] 실행하자마자 콘솔이 바로 꺼지는 현상 해결하기 [VisualStudio C/C++ 오류] 실행하자마자 콘솔이 바로 꺼지는 현상 해결하기 Ctrl + F5로 '디버깅하지 않고 시작' 했을 때, 콘솔창이 바로 꺼져버려 실행 결과를 확인하지 못하는 경우가 있습니다. 다른 입력함수로 잠시 멈추게할 수 있지만 매 번 번거롭습니다. 이 경우에는 프로젝트 속성에서 설정을 해주면 바로 꺼지지 않고 '계속하려면 아무 키나 누르십시오...' 가 뜨도록 해줄 수 있습니다. 프로젝트 파일을 클릭하여 마우스 오른쪽 버튼을 눌러, 속성(R)을 누릅니다. 또는 단축키 Alt + Enter 을 누릅니다. 구성 속성 -> 링커 -> 시스템 메뉴로 들어가, 하위 시스템 설정을 조정합니다. '콘솔(/SUBSYSTEM:CONSOLE)' 으로 설정하면 더 이상 꺼지지 않습니다. 확인버튼.. C언어/C언어 자료실 2018. 4. 7. [C언어 멘토링] 1주차 월요일 대학교 신입생 대상의 C언어 강의 자료 1. C언어 기초2. 변수3. 함수4. 입력과 출력 C언어/C언어 자료실 2018. 3. 27. [C/C++ 오류] 미리 컴파일된 헤더를 찾는 동안 예기치 않은... [C/C++ 오류] 미리 컴파일된 헤더를 찾는 동안 예기치 않은... Visual Studio 2017 버전을 사용하면서 C/C++ 프로젝트를 생성할 때 빈 프로젝트로 설정할 수 있는 마법사창이 사라졌다. 더 간편해지긴 했지만 그로 인해 예상치 못한 오류가 발생했다. stdafx.h 헤더파일을 삭제하면 아래의 오류가 발생하면서 컴파일 진행이 취소된다. 미리 컴파일된 헤더를 찾는 동안 예기치 않은 파일의 끝이 나타났습니다. '#inclue ~~~'을(를) 소스에 추가하시겠습니까? 해결 방법은 간단하다. '솔루션 탐색기'에서 솔루션 노드 아래 단계에 있는 프로젝트 노드를 선택하여 오른쪽 클릭 후 속성(R) 메뉴를 클릭한다. 또는 선택 후 'Alt + Enter' 를 누른다. 좌측 트리에서 C/C++ -> 미.. C언어/C언어 자료실 2018. 2. 16. 신용카드 할부 계산 처리 알고리즘 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104#include #include /* 2,000,000원을 15.4% 할부수수료율로 6개월 할부 납부월수 할부잔액 할부원금 할부수수료 월납부액 1 2,000,000 333,333 25,667 359,000 2 1,666,667 333,333 21,389 354,722 3 1,333,334 333,333 17,111 350,344 4 1,000,0.. C언어/C언어 자료실 2016. 7. 22. 이전 1 다음