반응형

프로그래밍 35

메모리 영역

프로그램에서 메모리를 구분하는 방법은 컴파일러 제조사에 따라 조금씩 다르지만 대략 다음과 같이 4 종류의 세그먼트들로 나눕니다. 1. Code Segment - 프로그램 코드가 들어 있는 부분. 2. Data Segment - 전역 변수와 static 변수들이 저장되어 있는 부분 3. Stack Segment - 로칼 변수들이 저장되어 있는 부분 4. Heap Segment - free space로서 dynamic allocation 으로 메모리를 사용할수 있다. 스택 세그먼트는 함수나 프로시듀어에서 선언한 변수들-로컬변수-들을 저장하는 공간으로 함수가 시작되면 변수들이 스택 구조형태로 차곡 차곡 메모리에 할당되어 사용되다가 함수가 종료되면 메모리 할당이 자동으로 해제되는 변수을 저장하는 공간 입니다. ..

크리티컬 섹션(Critical Section)

크리티컬 섹션(Critical Section) 내부적으로 Interlock을 사용하므로 쓰레드 동기화 중에서 가장 빠른 속도로 동작한다. 뮤텍스와 다른 점은 단일 프로세서에 한해서만 동작이 가능하다는 것. 사용 방법은 아래와 같다. * WIN API Critical Section 초기화 void WINAPI InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection); Critical Section 릴리즈 void WINAPI DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection); Lock 설정 void WINAPI EnterCriticalSection(LPCRITICAL_SECTION lpCrit..

% 서식문자 정리

% 서식문자 정리 %c : 문자 %s : 문자열 %d : 부호있는 10진 정수 %i : 부호있는 10진 정수, %d와 같음 %f : 부호있는 실수 (double이고 소수점은 기본 6자리까지 표시됨) %o : 부호없는 8진 정수 %u : 부호없는 10진 정수 %x : 부호없는 16진 정수(소문자) %X : 부호없는 16진 정수(대문자) %e : e 표기법에 의한 실수 %p : 포인트 %0xd : 자릿수가 x개인 정수, 윗부분은 0으로 채움 %.fx : 소수점을 x자리만큼 출력

Visual Studio 2008 DLL파일 배포 방법

"응용 프로그램 구성이 올바르지 않기 때문에 이 응용 프로그램을 시작하지 못했습니다. 이 문제를 해결하려면 응용 프로그램을 다시 설치하십시오." 또는 "This application has failed to start because the application configure is incorrect. Review the manifest file for possible errors. Reinstalling the application may fix the problem." Visual Studio 2008에서 작성한 프로그램 실행시 위와 같은 메세지가 나올 경우가 있었다. (VS 2005, VS 2010에서도 발생하는 것으로 알고 있다.) 이것은 DLL 버전이 맞지 않아 발생하는 문제이다. 해결 방법은 ..

프로그래밍 2011.09.14

VBScript 기본 문법

VBScript 기본 문법 1. 변수 변수 선언 - 대소문자 구분 안 함 - 문자로 시작해야 하며 문자, 숫자, 밑줄만 사용 가능 - 길이는 255자 이내 - 선언시 dim을 사용, 지역변수의 경우 선언 없이 사용하기도 함. dim name1, name2, name3... 배열 dim array(2) array(0) = 0 array(1) = 1 array(2) = 2 동적 배열 dim array() redim array(3) '이렇게 선언할 경우 배열에 있던 값은 삭제가 된다' redim preserve array(3) '이렇게 선언할 경우 배열에 있던 값은 남아 있게 된다.' 2. 연산자 비교 연산자 연산자 설명 = 같다 같지 않다 크다 = 크거나 같다 is 두 변수의 객체가 같다 논리 연산자 연산자..

프로그래밍 2011.06.17

소스인사이트에서 한글 주석 깨지지 않게 하기

설정방법 1. DoNoting() 이라는 macro를 만들어 추가한다. 진짜로 아무일도 하지 않는 걸로. macro DoNothing() { } 2. Option > Key Assignment 을 선택한다. 3. Macro: DoNothing 선택후에 Assign New Key를 누르고 다음의 키조합을 입력한다. Shift + 한/영 (황당한 조합이지만 먹힌다.) 4. 화면에 "shift+ " 로 표시되면 들어간 것이다. 5. 완료!! 이후로 아무 것도 해줄 필요가 없다. 그냥 메모장 쓰듯이 한글입력하면 된다. 쌍자음 그냥 입력해도 안 깨진다. 주의 "어 안되잖아?" 하시는 분이 있을까봐... txt 파일에서 시험해보면 확실히 아무런 문제가 없는데, c 파일에서는 커멘트나 따옴표 블럭 밖에서는 한글이 깨..

프로그래밍 2010.09.28

프로그래밍/리눅스 copy_from_user

copy_from_user() * 유저 영역에서 커널로 데이터를 복사할 경우에 사용한다. * put_user() 나 get_user() 와 달리 copy_to_user() 와 copy_from_user() 에서는 복사되지 않은 데이타의 양을 리턴한다. 성공시에는 0을 리턴한다. ☞ 이 함수들은 암시적으로 sleep 에 들어갈 수 있다. 그래서 이 함수들은 user context 밖에서나 (user context 밖에서는 별 의미가 없다), 인터럽트가 비활성화된 상태 혹은 spinlock 이 걸린 상태에서 절대 사용되서는 안된다. unsigned long copy_from_user (void * to, const void __user * from, unsigned long n); to Destination..

프로그래밍 2010.03.16
반응형