묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨독하게 되새기는 C 프로그래밍
안녕하세요. 질문 드립니다.
안녕하세요.강의를 몽땅.. 다 담아서 열심히 수강하고 있는 한 학생입니다.^^학습한 내용을 제대로 이해했는지 확인 하고 싶어 질문 남깁니다. OS도 결국 명령어와 데이터의 조합으로 이루어진 이진수 binary 파일인 프로그램에 불과하며disk에 저장되어 부팅 시 부트 로더에 의해 RAM으로 LOAD 되는 것이며,이 때 커널은 항상 고정 크기를 가지며 파편화가 되지 않습니다.(메모리 가상화를 OS가 해주므로)즉, 커널은 연속된 메모리 공간에 쌓입니다.프로세스들은 이 커널 영역을 공유 사용하며, 저장된 가상 메모리 테이블 등에 의해 맵핑 되구 syscall을 할 수 있습니다.또한 VMWare 등의 프로그램을 통해 가상 머신을 돌릴 때도 커널은 고정 크기를 가집니다.VM에서 실행할 때, RAM 용량 설정, Thread 갯수 설정 등의 옵션이 있는데4코어 8GB 환경이라면 VM에 2코어 4GB를 지정해주면이를 딱 조절해서 HOST와 Virtual OS는 자원을 반 씩 나눠 쓰는 개념이기 때문이고, 가상 OS 상에서의 프로세스들은 Virtual OS에 의해 가상 메모리를 관리 받습니다.검색과 고민 끝에 이렇게 이해를 했는데 잘 한 것이 맞는지,잘못된 부분이나 조언해주실 것이 있다면 부탁드리겠습니다.^^항상 잘 듣고 있습니다.감사합니다.
-
미해결홍정모의 따라하며 배우는 C언어
부록 무료 이벤트는 끝난건가요?
관련 링크가 사라졌던데 이제는 끝난건가요?
-
미해결HAL, CubeMX, TrueSTUDIO를 이용한 STM32F4 무료 강좌
선택사항을 실행할 수 없으며 최신 실행 작업이 없습니다. 질문
[GPIO로 LED출력 및 스위치 입력] 수업을 따라서 공부하고 있습니다. 그런데 디버깅을 하니 실행할 수 없음의 창이 뜨며 "선택사항을 실행할 수 없으며 최신 실행 작업이 없습니다." 라고 뜨는데 프로그램 설치를 잘못한걸까요?? ㅠㅠ
-
해결됨독하게 되새기는 C 프로그래밍
overrun 예시 문제에 대한 질문있습니다.
강사님 강의 OVERRUN 예제를 보며 똑같이 해보려고 하는데 overrun 경고를 잡고 실행을 중단한것으로 판단됩니다.무시하고 실행하는 방법이 있을까요?
-
미해결HAL, CubeMX, TrueSTUDIO를 이용한 STM32F4 무료 강좌
TrueSTUDIO가 뜨지 않습니다.
Atollic TrueSTUDIO를 설치했음에도 리스트에 뜨지 않는데 이럴때는 어떻게해야할까요??EWARMMDK-ARMSTM32CubeIDEMakefile 이렇게 4개만 있습니다. 도와주세요 ㅠㅠ
-
해결됨홍정모의 따라하며 배우는 C언어
printf의 return value에 대해
printf가 문자열의 길이를 return 한다면 문자열을 다룰 때 한정으로 strlen 함수와 같은 값을 반환하는 걸까요?
-
해결됨홍정모의 따라하며 배우는 C언어
0.8 CPU가 일하는 방법 수업 관련 질문
명령어가 명령어 레지스터로 넘어간다고 하셨는데명령어랑 메모리랑 같은건가요? 0.8 CPU가 일하는 방법 10:56
-
해결됨홍정모의 따라하며 배우는 C언어
4-10 * modifier 질문!
마지막 예시로 * modifier가 scanf 함수에 어떻게 적용되는지 설명하셨는데, *이 scanf 에서 쓰이면 이것과 결합된 형식 지정자는 무시되는 건가요??
-
해결됨CUDA 프로그래밍 (5) - C/C++/GPU 병렬 컴퓨팅 - 아토믹 연산 atomic op
선생님 gpu->cpu 속도 개선에 대해서 질문드려요
선생님 안녕하세요. 저번에 opencl과 cuda를 같이 공부 중이던 학생이에요.제가 프로그램을 작성하는 도중에 VRAM <-> RAM의 전송 속도가 느리다는 것을 깨달았는데요.제가 보통 결과 값으로 40mb 정도를 가지는데(위의 자료에 따르면 6ms 정도) 이를 최대한 cpu에서 빨리 받기 위한 방법은 아직까지 존재하지 않는 것인지 알고 싶습니다!
-
해결됨홍정모의 따라하며 배우는 C언어
코딩 중 발생하는 warning에 대해서
visual stduio로 코딩 후 컴파일을 하면 대체로 "No issues found"가 표시되기도 하지만, 노란색으로 warning이 뜨기도 해요.혹시 이렇게 뜨는 warning은 모두 필수적으로 제거해야 하나요?
-
미해결C로 배우는 자료구조 및 여러가지 예제 실습
search_song함수의 ptr_snode = ptr_snode;의 의미가 궁금합니다
void search_song(char* artist, char* title) { Artist* ptr_artist = find_artist(artist); if (ptr_artist == NULL) { printf("No Such artist exists."); return; } SNode* ptr_snode = ptr_artist->head; while (ptr_snode != NULL && strcmp(ptr_snode->song->title, title) < 0) // 없음 ptr_snode = ptr_snode; if (ptr_snode != NULL && strcmp(ptr_snode->song->title, title) == 0) {// 존재 printf("Found:\n"); print_song(ptr_snode->song); } else { printf("No such song exists.\n"); return; } } 다음의 코드에서 while문의 ptr_snode = ptr_snode;의 의미 설명을 부탁드려도 될까요 ?? 어떤 역할을 하는 코드인지 모르겠네요 ㅠ
-
해결됨
scanf 관련 질문 드립니다.
1/int num;char str1[100];scanf("%[^,],%d",str1,num);이렇게 했을 때 %[^,]는 ,가 나오기 전까지 입력 받는 것으로 알고 있습니다.그래서 human,3으로 입력 했을 때 str1에는 human이 num에는 3이 오류 없이 들어가는 걸 확인 했었습니다.%[^,]와 %d 사이에 있는 ,는 정확하게 어떤 역할을 하는지 궁금합니다.,가 입력되었을 때 ,를 무시하는 역할을 하는 것인지? 아니면 다른 무언가인지그리고 human 3으로 입력 했을때 쓰래기 값이 나오는데 어디에서부터 나온 쓰래기 값인지 궁금합니다.
-
해결됨홍정모의 따라하며 배우는 C언어
5-2, 초기화와 대
안녕하세요. 강의를 듣던 중 'const int TWO = 2;' 코드가 대입이 아니라 초기화라고 설명하셨습니다.대입과 초기화의 차이가 헷갈립니다.초기화란 처음 어떤 변수에 값을 넣는 과정을 말하는 걸까요?그럼 초기화는 일종의 대입이 아닌가요?
-
미해결홍정모의 따라하며 배우는 C언어
14.4 문자열을 받는 함수
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #define MAX_TITLE 40 #define MAX_AUTHOR 40 #define MAX_BOOKS 3 /* maximum number of books */ char* s_gets(char* st, int n) { char* ret_val; char* find; ret_val = fgets(st, n, stdin); // vs. scanf() if (ret_val) { find = strchr(st, '\n'); // look for newline if (find) // if the address is not NULL *find = '\0'; // place a null character there else while (getchar() != '\n') continue; // dispose of rest of line } return ret_val; } struct book { char title[MAX_TITLE]; char author[MAX_AUTHOR]; float price; }; int main() { struct book library[MAX_BOOKS] = { {"Empty", "Empty", 0.0f}, }; /* array of book structures */ int count = 0; while (1) { printf("Input a book title or press [Enter] to stop.\n>>"); if (s_gets(library[count].title, MAX_TITLE) == NULL) break; if (library[count].title[0] == '\0') break; printf("Input the author.\n>>"); s_gets(library[count].author, MAX_AUTHOR); printf("Input the price.\n>>"); int flag = scanf("%f", &library[count].price); while (getchar() != '\n') continue; count++; if (count == MAX_BOOKS) { printf("No more books.\n"); break; } } if (count > 0) { printf("\nThe list of books:\n"); for (int index = 0; index < count; index++) printf("\"%s\" written by %s: $%.1f\n", library[index].title, library[index].author, library[index].price); } else printf("No books to show.\n"); return 0; }안녕하세요, 해당 코드에서 구조체에 대한 부분은 아니지만 궁금증이 생겨 질문 남깁니다.문자열을 받아 구조체의 문자열 멤버에 넣는 사용자 정의함수 s_gets()에 대한 질문인데요,해당 예제에서는 s_gets()의 arguments로 title, author 등의 배열 형태가 들어가는데, 사실 함수 안에서는 배열이 포인터로 decay된다고 알고 있습니다.그렇게 된다면 함수 안에서는 문자열을 다룰 때 read-only가 되어 변경할 수 없게 되는 것 아닐까요? 그런데 해당 코드의 s_gets()함수에서는 '\n'을 찾아 '\0'으로 바꾸고 있어서 살짝 헷갈립니다.argument인 library.title, library.author 등이 본체는 배열이기 때문에 문제가 없는 걸까요?
-
해결됨독하게 되새기는 C 프로그래밍
ShellCodeSample03.c에 대하여 질문이 있습니다.
안녕하세요 선생님 질문이 있습니다.Sample03에는 WinExec , exit이 주석처리되어 있어서 선생님이 추가적으로 언급하신 함수의 주소 문제가 아닌것 같은데 '05_ShellCodeSample03.exe'(Win32): 'C:\Windows\SysWOW64\ucrtbased.dll'을(를) 로드했습니다. 0x298c 스레드가 종료되었습니다(코드: 0 (0x0)). 예외 발생(0xFFFFFFFF, 05_ShellCodeSample03.exe): 0xC0000005: 0xFFFFFFFF 위치를 실행하는 동안 액세스 위반이 발생했습니다..이런 에러가 떠서 기계어 숫자가 틀렸나 해서보니 밑줄에서 한 4개정도 가 달라서 수정하였더니 동작하였습니다.#include <Windows.h> void main() { char shellcode[] = "\x55\x8B\xEC\x83\xEC\x48" "\xC6\x45\xF4\x63\xC6\x45\xF5\x61\xC6" "\x45\xF6\x6C\xC6\x45\xF7\x63\xC6\x45" "\xF8\x00\x6A\x01\x8D\x45\xF4\x50\xA1" "\x00\x70\x41\x00\xFF\xD0\x6A\x01\xA1" "\xC0\x70\x41\x00\xFF\xD0"; char myshellcode[] = "\x55\x8B\xEC\x83\xEC\x48" "\xC6\x45\xF4\x63\xC6\x45\xF5\x61\xC6" "\x45\xF6\x6C\xC6\x45\xF7\x63\xC6\x45" "\xF8\x00\x6A\x01\x8D\x45\xF4\x50\xA1" "\x00\xb0\xba\x00\xFF\xD0\x6A\x01\xA1" "\x4C\xB1\xBA\x00\xFF\xD0"; // WinExec("", 0); // exit(0); //int *pShell = (int*)shellcode; int* pShell = (int*)myshellcode; __asm { jmp pShell } }해당 원인도 프로그램이 실행할때마다 ASLR 때문인것인가요? 궁금합니다
-
해결됨홍정모의 따라하며 배우는 C언어
3-9, 고정 너비 정수형 질문
안녕하세요 강의를 복습하며 헷갈리는 점이 있어 질문드립니다.고정 너비 정수형은 시스템이 다른 운영체제에서도 코드가 정상적으로 작동할 수 있도록 정수 자료형의 크기를 미리 지정한 정수형으로 이해했습니다. 이러한 정의가 맞을까요?printf 함수에서 고정 너비 정수형으로 선언된 변수(i32)의 형식지정자를 쓸 때 예시를 보며 살짝 헷갈리는 점이 생겼습니다.예시에서 3가지 경우를 교수님께서 보여주셨는데, 전부 출력이 동일하게 나왔습니다.만약 int type을 2바이트로 인식하는 시스템에 예제의 코드를 사용하면 메크로를 쓰지 않은 첫 번째, 두 번째 예시는 오류가 발생하는 건가요? 맞다면 sigend int 형식 변환자에 속하는 %d와 32비트로 고정된 변수 i32의 크기가 서로 맞지 않아서 일까요? 아직 이해가 부족해서 용어들이 적절히 쓰였는지 모르겠습니다.답변 감사합니다~!
-
해결됨독하게 되새기는 C 프로그래밍
함수포인터기본문법 8:21초 질문입니다.
안녕하세요 선생님 질문이 있습니다.저의 경우에 디스어셈블리(release 64)로 확인한 결과int main() { 00007FF64DD11070 sub rsp,28h int (*pfAdd)(int, int) = add; result = pfAdd(3, 4); printf("Result %d\n", result); 00007FF64DD11074 mov edx,7 00007FF64DD11079 mov dword ptr [result (07FF64DD13638h)],7 00007FF64DD11083 lea rcx,[string "Result %d\n" (07FF64DD12250h)] 00007FF64DD1108A call printf (07FF64DD11010h) return 0; 00007FF64DD1108F xor eax,eax }add (메모리주소) 부분이 없는데 12세대 cpu를 써서 이런 차이가 있는것인가요?
-
해결됨홍정모의 따라하며 배우는 C언어
4-4 Extra 예시 오류
안녕하세요. 교수님과 똑같이 코드를 쳤는데 에러가 발생했습니다.인터넷을 검색해도 무슨 말인지 잘 모르겠어서 질문 드립니다. 감사합니다.
-
미해결홍정모의 따라하며 배우는 C언어
8.9 강의 파일 위치에 대해 여쭙니다.
vcxproj도 있는 상황에서 파일 리드에 실패합니다. 이럴 경우 어떻게 해야하나요?
-
해결됨독하게 되새기는 C 프로그래밍
Stack frame 관련하여 질문 드립니다.
인터넷에 검색 했을때는 64bit에서 로컬 변수 주소 배치 방향이 32bit와 다른 것이 32bit, 64bit의 자체적인 특성이 아니라 컴파일러의 환경에 따라 달라진다고 하던데 어떤 것이 맞는지 궁금합니다.