일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Docker
- BOJ
- go
- 백준
- C++ library
- 리듬게임
- 공룡책
- JUCE library
- 연결리스트
- c++ heap
- gui
- LOB
- 프로그래밍
- 알고리즘
- go channel
- tour of go
- Nebula
- C언어
- C++ gui 라이브러리
- a tour of go
- OS
- 자료구조
- C++
- C++ gui
- JUCE라이브러리
- 코딩
- vim-go
- JUCE
- JUCE 튜토리얼
- 운영체제
- Today
- Total
목록코딩 (9)
CafeM0ca
어셈블리 프로그램은 3개의 영역으로 나뉜다.- 데이터 영역- bss 영역- 텍스트 영역 The data section데이터 영역은 사용된다. 초기화 선언된 데이터나 상수들로. 이 데이터들은 런타임때 바뀌지 않는다.선언된 값들로 상수 값이나 파일 이름, 버퍼 사이즈 등 정의할 수 있다. 데이터 영역을 선언하는 구문은 다음과 같다.section.data The bss Sectionbss 영역은 사용된다. 변하는 변수들로. bss 영역을 선언하는 구문은 다음과 같다.section.bss The text sectiontext 영역은 실제 코드를 유지하는데 사용된다. 이 영역은 반드시 global _start와 함께 시작되어야 한다. 이것은 커널에게 말한다. 프로그램 실행 시작점이 어딘지.section.textg..
공유메모리는 프로세스가 메모리를 공유해서 쓰는 메모리다. 그럼 누가 메모리를 연결 시켜주는가? 이 문제는 통신 문제로 넘어가서 서버와 클라이언트의 관계에 놓인다. a프로세스가 공유메모리를 사용할 수 있도록 열어주고(서버) b프로세스가 공유메모리에 접근한다(클라이언트)장점: 자원을 공유해서 쓸 수 있다. (ex: 쓰레드) 단점: 같은 자원을 공유해서 쓰다 보니까 항상 경쟁 상태다. -> 교착 상태 발생 가능성 있음 잘 쓰면 금이고 잘못 쓰면 독이 되니 메모리 관리 잘 하면서 써야된다.공유메모리는 shm로 생겼는데 처음에 쉬므라 읽었는데 곰곰히 생각해보니 share memory로 읽는게 맞는 듯 하다.(shmget 쉐어 메모리 겟) 생성->첨부->사용->때어냄->제거 shmget(key_t,size,shmf..
간단한 자료구조라서 짜는데 별로 오래 안걸릴 줄 알았지만 최소 12시간 붙잡고 구현했다.모든 자료형에 대해 처리 해주고 싶었는데 C++은 정적언어라 불가능했다. 템플릿을 쓰던, auto를 쓰던 입력값에 대해 자료형을 알아내는 문법은 없더라..(이것땜에 하루 새벽 보내버렸고)일단 포기하고 int형만 받도록 했다. 아마 모든 자료형에 대해 처리하려면 오버로딩이나 자료형 테이블을 만들어서 테이블을 통해 연결리스트의 노드들을 이어줘야 할 듯 하다. (파이썬 쓰는게 답이다)컴파일 환경: g++ -std=c++11 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061..
링크드리스트를 2일째 구현중인데 머리가 아프다.모든 자료형에 대하여 처리 해주려 했는데 C++은 정적언어라 불가능하다..어떻게든 하려고 이곳 저곳(stackoverflow 라던가)에 질문 던젔는데 돌아오는 답변은 "그렇게 디자인 하지 마세요."였다. 차라리 python으로 처리 하는게 더 편할 듯.. C++로는 일단 단일 자료형에 대하여 처리 해야겠다.
모카가 시그마를 처음 배울 때, 시그마를 수식으로는 표현이 안되는데 C코드로는 표현이 가능하다. 가운데 문제를 식으로 표현 할 줄 몰라서ㅋㅋ.. 123456789101112131415161718#includeint main(){ int n; int binary=1; int sum[100]={0,}; int result=0; printf("n값: "); scanf("%d",&n); for(int i=1;i
인라인 함수는 함수와 다르게 코드를 대체한다. 뭔소린가 싶지만 루틴을 보면 안다.12345678910111213141516171819202122232425262728293031#includeusing namespace std;//선언과 정의 둘중 한 곳에서 inline 키워드를 함수 타입 앞에 써주면 된다.inline void hi() { cout
포인터는 익숙하지만 함수 포인터는 '으음?..' 하는 느낌이다. 정리할 겸 예제를 통해 알아보려 한다.12345678910111213141516171819202122232425262728#includeusing namespace std; const int Ex1(int n) { cout
int n1=10,n2=20;const int *p1 = &n1; // p1값 변화(o) / *p1값 변화(x)int const *p2 = &n2; // p2값 변화(x) / *p2값 변화(o)int * const p2==int const *p2 긴말없이 이렇게 알면 간단명료하다.p1의 값은 p1이 가르키는 주소.*p1의 값은 p1이 가르키는 주소의 값. 좀 더 이해하기 쉽게 접근하자면 왼쪽으로 읽는 방법이 있다.예를 들면 const int *p1 = &n1;에서변수 이름은 짜르고보자.const int **의 왼편에는 const가 없다. 그러므로 p1의 역참조값은 바뀔 수 있다.int의 왼편에는 const가 있다. 그러므로 p1이 가리키는 주소는 바뀔 수 없다. 좀 더 복잡한 선언을 보자.const in..
흔히 아는 카이사르 암호인데 +3이아니라 -3으로 짰다.a면 x, A면 X로 대응한다. 123456789101112131415161718192021222324252627282930#include#include #define END_ALF 26int main(){ unsigned char str[200]; fgets(str, 200, stdin); for (int i = 0; str[i]!='\n'; i++) { if (str[i] == ' ') printf(" "); else if (islower(str[i])) { //소문자인지 판단 if (str[i] - 3