목록전체보기 (70)
따..딱히 공부하려고 포스팅하는 건 아니니까..!
#define 알다시피 #이 붙은 것은 전처리기이다.전처리기라는 것은 컴파일을 하기 전에 소스코드가 미리 처리를 해버리는 것을 말한다. 즉, #define을 사용하면 컴파일러가 쓰는 기호 테이블에 표시가 되지 않아 파일 오류가 나도 어디서 오류가 났는지 알기가 쉽지 않다. 예를 들어, #define NUM 100 라는 코드를 짰다고 하자. 이 코드만을 봤을 때에는 NUM이 기호식 이름으로 보일지도 모른다. 하지만 컴파일러 입장에서는 NUM은 그냥 100이라는 상수이다. 그래서 에러 메세지가 나면 NUM이 표시되는 것이 아니라 100이라는 상수만 표시가 된다. 그러므로 어디서 오류가 났는지 어렵다는 것이다. 그렇기 때문에 #define을 멀리하고 const, enum, inline을 사용해야 하는 것이다...
포인터와 레퍼런스 포인터 레퍼런스 표현 * & 의미 메모리 주소를 가리킨다 값에 직접 접근하는 주소 변수 접근시 나타나는 값 가리키는 주소가 가진 변수의 값 변수의 내용이 저장된 메모리 주소값 상수 참조 X X NULL 초기화 가능여부 O X 초기화 객체(변수)의 주소값을 입력받음 객체(변수)를 직접 입력받음 초기화 여부 꼭 하지 않아도 됨 반드시 해야함(나중에 값을 바꿀 수 없기 때문에) 초기화 이후 다른 변수 참조 가능 다른 변수 참조 불가능 특징 메모리 공간을 할당함,포인터가 가리키는 주소의 크기는 자료형이 무엇이든 간에 항상 같다. 메모리 공간이 할당되는 것이 아님, 이미 선언된 변수를 다른 이름으로 부르는 것 포인터와 레퍼런스가 생긴 계기입력값을 받는 함수의 변수가 값을 복사한다 -> 항상 복사..
프로세스(Process)란? 간단히 말하자면 실행중인 프로그램을 말한다. 그러나 한 프로그램을 여러 번 실행하여 여러 개의 프로세스를 만들 수 있으므로 프로그램 자체가 프로세스인 것은 아니다. (※ 커널에는 프로세스가 하나밖에 없다 = 커널에서는 모든 자료구조와 메모리를 공유할 수 있다) 텍스트 : 프로세스가 실행하는 실행코드를 저장하는 영역데이터 : 전역변수, 정적변수를 위한 메모리 영역힙 : 동적 메모리 할당을 위한 영역스택 : 함수 호출을 구현하기 위한 영역(함수 호출 시 해당 함수의 지역변수, 매개변수, 반환주소, 반환값 등을 포함하는 활성 레코드가 저장)U-영역 : 열린 파일 디스크립터, 현재 작업 디렉터리 등과 같은 프로세스 정보를 저장하는 영역 프로세스를 유지하기 위해서는 커널 내의 프로세스..
1. 변수 저장 영역 외부 소스 접근 여부 함수 내 선언 특징 전역변수 데이터 O X 정의를 한 번만 할수 있다 정적변수 데이터 X X 자료형 앞에 static을 붙인다 지역변수 스택 X O 함수가 살아있는 동안에만 변수가 존재 정적 전역변수 데이터 X X 전역변수이지만 외부 소스에서 접근 불가 정적 지역변수 데이터 X O 함수를 빠져나와도 변수에 저장된 값이 사라지지 않는다 const : 자기 자신의 왼쪽에 있는 것을 상수화 (단, 가장 왼쪽에 있을 때에는 오른쪽을 고정한다)ex) 'const int *const ptr' 이면, 'int, *' 을 상수화(고정)한다. extern : 함수에 붙여주면 외부에 공개가 된다. 즉, 외부 소스에서 접근 허용이 가능하다. (extern 는 어딘가에 존재하는 전역..
1. 객체 지향 프로그래밍(Object-Oriented Programming: OOP) 소프트웨어를 객체 단위로 작성하는 방법 1) 객체지향의 기본요소 1. 클래스(Class) 같은 종류의 집단에 속하는 속성과 행위를 정의한 것이며 객체지향 프로그램의 기본적인 사용자 정의 데이터형이라고 할 수 있다. - 멤버 변수(필드, field) : 객체 안에 포함된 변수를 다른 일반적인 변수와 구별하기 위해 이름지은 것(클래스에서 자세한 설명)- 멤버 함수(메소드, method) : 객체 안의 함수를 일반적인 함수와 구별하기 위해 이름지은 것 ∴ 객체 ≒ 클래스, 객체 > 클래스 (클래스 = 설계도, 객체 = 제품) 2. 객체 객체 지향 기술의 핵심 개념, 현실세계의 객체들을 흉내내어 소프트웨어 상에서 구현한 것이..
Segmentation Fault란? 잘못된 메모리 참조로 인한 오류를 말합니다. 흔히 NULL 파일을 읽거나 쓰려고 할때, 혹은 할당받은 메모리 공간을 넘은 곳을 건드렸을 때 발생하거나 파일이 비정상적인 이유에 의해 열리지 않은 경우에 주로 나는 오류입니다. 할당받은 메모리공간을 넘은 곳을 건드리는 것이 주된 원인이기 때문에 C/C++의 포인터를 이용할때 가장 많이 나는 오류이기도 합니다. 이때의 오류는 비교적 잡기 쉽지만 STL같이 내부적으로 포인터가 구현되어있는 경우에는 찾기가 난해할 지도 모르니 조심해야 합니다.
1. 파일 시스템파일을 만들 수 있게 해주는 시스템디스크에 위치하며, 하드디스크에서 물리적 위치를 전축의 원리를 이용하여 나눈다. 파일이름을 엔트리에 등록하면 파일시스템 내에 파일 공간이 확보가 된다. 이렇게 파일 공간이 확보되고 나서 파일의 블록 정보를 읽는데, 이때 파일이 블록의 크기를 넘으면 새 파일 블록을 확보 받는다. (예를 들어, 일반적으로 8kb 정도의 블록을 확보하는데 파일크기가 10kb이면 두개의 블록을 확보 받는다. 즉, 10kb의 파일을 저장하기 위해서 16kb의 파일 공간이 확보가 되는 것이다.) 1. 개행문자가 다르다. 즉, 바이너리 파일의 표시방법이 다르다. Windows의 개행문자 : \r + \n 기능이 동시에 들어있다. (Carriage Return + Line Feed)U..
응용 프로그램은 시스템 호출을 통해 필요할 때마다 커널에 서비스를 요청할 수 있다.BUT!! C 언어가 제공하는 라이브러리 함수를 사용할 수도 있다. C 라이브러리 함수는 함수 내에서 관련 시스템 호출을 한다. 따라서 C 라이브러리 함수는 시스템 호출을 보다 쉽게 사용할 수 있도록 포장한 보다 높은 수준의 프로그래밍 인터페이스라고 볼 수 있다. 1. C 파일 모든 데이터를 연속된 바이트 형태로 저장한다. 저장된 데이터에 따라 텍스트 파일과 이진 파일로 구분한다. 텍스트 파일(Text File) : 문자들만으로 이루어진 파일이며, 매 줄마다 새줄문자(\n)를 포함하고 있다.이진 파일(Binary File) : 모든 데이터를 컴퓨터 내부의 이진수 표현 그대로 저장한 파일이며, 이미지 파일이나 실행파일 등이 ..
컴퓨터 시스템 : 하드웨어와 소프트웨어로 구성 - 하드웨어 : CPU, 메모리, 저장장치, 주변장치 등으로 구성- 소프트웨어 : 운영체제, 데이터베이스 시스템 등 유닉스/리눅스는 커널이 하드웨어를 운영관리 하며 다음과 같은 서비스를 제공한다. 1. 프로세스 관리 (Process Management): 여러개의 응용 프로그램들이 실행될 수 있도록 프로세스들을 스케쥴링한다.: 마치 동시에 수행되는 듯한 효과를 낸다. 2. 파일 관리 (File Management): 디스크와 같은 저장장치 상에 파일 시스템을 구성하여 파일을 관리한다. 3. 메모리 관리 (Memory Management): 메인 메모리가 효과적으로 사용될 수 있도록 관리한다. 4. 통신 관리 (Communication Management): ..
데이터베이스(Database) 조직에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터(=테이블들)를 모아 구조적으로 통합해 놓은 것. 예를 들어, 서점의 데이터베이스를 구축한다고 가정하고, 아래와 같이 3개의 테이블(Book, Customer, Orders 테이블)이 있다고 한다. - Book 테이블 book_id book_name publisher price 1 윤성우의 열혈 자료구조 Orange Media 27000원 2 이펙티브 C++ Addison Wesley 23000원 3 3D 게임 프로그래밍 한빛미디어 36000원 - Customer 테이블cust_id name address phone 1 김철수 서울특별시 010-0000-0000 2 문채원 대구광역시 010-0000-1234 3 김연아 ..