묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨독하게 시작하는 C 프로그래밍
'16진수 표기가 사용되는 예' 수업에 대한 질문입니다.
강사님!ㅠ"64비트 시스템은 1바이트 메모리에 64비트 주소를 부여해 관리 한다" 이 말씀이 계속 이해가 안되서요ㅜ8비트 메모리에 64비트 주소를 '부여'한다는게 물리적으로 어떻게 가능한지 설명해주실 수 있을까요?
-
해결됨독하게 시작하는 C 프로그래밍
강의가 재생이 안돼요
노트북으로 강의를 듣는데 강의가 검정색 화면에 아무것도 안뜨고 강의가 재생이 안되는데 어떻게 들을 수 있나요?
-
해결됨독하게 시작하는 C 프로그래밍
Ascii코드
아스키코드가 7비트로 이루어져있고 1바이트 단위로 통신할 때 나머지 1비트는 패리티 코드로 쓰게 되어 있는걸로 아는데 이 1비트를 패리티 코드 대신 각 컴퓨터 회사마다 마음대로 쓸 수 있게 해준건가요?
-
해결됨독하게 시작하는 C 프로그래밍
Native code
넓고 얕게 외워서 컴공 전공자 되기 25강독하게 시작하는 C프로그래밍 11강 에 Native 코드라는 설명을 해주시는데 25강 내용에서는 high level 언어 예시를 C언어라고 말씀하시면서 이러한 C언어를 OS와 CPU에 의존성을 가진 native code라고 설명을 해주셨습니다. 그래서 native code가 high level 언어에 속하는 줄 알았는데 11강 내용에서는 CPU에 의존성을 지닌 코드를 Native code라고 설명하시면서 c언어는 우리가 알아먹을 수 있는 언어로 되어있지만 Native code는 2진수로 표현이 되어있다고 하시고 Native code를 저급어에 속한다고 설명을 해주시더군요 어느 강의가 맞는 설명인가요?
-
해결됨독하게 시작하는 C 프로그래밍
scanf_s 관련 질문 있습니다.
강의를 통해 많은 도움 얻고 있습니다. 감사합니다.문의드릴 내용은, 섹션 10번 필수실습 문제(평균값, 시분초)에서 scanf_s 사용시 %d 뒤에 *c를 써야 하는 거 아닌지요?*c를 안 쓰면, 뒤의 행들이 실행되지 않고 중간에 중단되어야 하는 거 아닌지 문의드립니다. 답변 미리 감사드립니다.
-
해결됨독하게 시작하는 C 프로그래밍
char szBuffer[32]={0}; 질문 입니다
동영상 섹션 10 번형식 문자 기반 문자열 입력 3:05초에 주소가 32개 라고 하셨는데32개가 32Bit인가요?
-
미해결Arm 아키텍처: 트러스트존(TrustZone) [저자직강 3부-1]
강의자료 관련 문의
안녕하세요 강사님. Arm 아키텍쳐 및 리눅스 커널 관련 로드맵을 수강 중인 학생입니다. Advanced 과정에 해당 하는 내용에 대한 강의자료 업로드를 부탁드려도 될 지 궁금해서 질문드립니다. 항상 유익한 강의 감사합니다 :)
-
해결됨독하게 시작하는 C 프로그래밍
mystrcat 함수 질문있습니다!
mystrcat 함수 마지막 부분에서 *++pszDst = '\0';return --pszDst;이렇게 나와있는데 *pszDst = '\0';return pszDst;이렇게 해도 문제가 없나요? 문제가 있다면 설명해주시면 감사하겠습니다!
-
해결됨독하게 시작하는 C 프로그래밍
Null 역참조??
이게 무슨 오류인지 모르겠어요! 강사님은 안뜨셨는데 저는 뜨네요..
-
해결됨독하게 시작하는 C 프로그래밍
visual studio 2022 디버그 메모리창 질문
수업관련 내용이 아니라 죄송합니다만.. 디버그에서 메모리를 보려하면 이렇게 ?? ?? ?? ?? 만 나와서 메모리를 뜯어볼 수 없어서 너무 답답합니다.혹시 이를 해결할 방법을 아시는지 해서 질문 남겨봅니다..수업 잘 듣고 있습니다. 감사합니다..위는 제 코드인데변수 xds의 주소로 접근하면 아래처럼 나옵니다다른 상황에서도 이래서 변수로 접근하는 것이 어렵습니다..
-
해결됨독하게 시작하는 C 프로그래밍
콘솔(Console)에 대하여 질문
안녕하세요 강의 정말 잘 보고 있습니다!Console과 관련하여 질문이 생겨 올립니다! 제가 나름대로 정의한 Console의 정의는 아래와 같습니다 과거에는 Console이라는 하드웨어가 존재하였다하지만 오늘날 말하는 Console은 물리적인 Console을 의미하는것보다는 모니터, 키보드, 마우스와 같이 시스템과 상호작용하는 입출력 환경 전체를 의미한다혹은 CLI를 통해 OS와 직접 상호작용 할 수 있는 Console(Terminal) Application을 의미하기도 한다( Application 단에 구현 ) 질문 ( 그림 참고 )"Console을 추상화한 것이 stdin, stdout다" 의 의미는 Console환경, 즉 모니터와 키보드를 추상화한것이 모니터는 stdout, 키보드는 stdin 파일이라고 이해해도 되는걸까요?해당 내용을 그림으로 정리해 보았습니다
-
해결됨독하게 시작하는 C 프로그래밍
파일 입/출력 시 관여하는 컴퓨터 요소들 질문
안녕하세요 널널강사님! 우선 좋은 강의에 감사인사드립니다. 파일 입/출력 관련해서 질문이 있는데요! 파일 입/출력이 수행되는 과정에서 이 '과정'에 조금이라도 관여하는 컴퓨터 요소들(CPU, RAM, Kernel, ...)이 무엇인지가 궁금한데요.예를 들어, 아래와 같은 예졔 소스코드를 제가 디버그 모드로 실행해보았는데요.(참고로 MacOS에서 clang 컴파일러를 사용)#include <stdio.h> int main(void) { FILE* fp = NULL; fp = fopen("../TEST.txt", "w"); if (fp == NULL) { puts("Error: Failed to open file"); return -1; } fprintf(fp, "Hello"); fclose(fp); return 0; }어쨌건 위 소스코드가 하는 일은 "TEST.txt" 라는 파일을 생성하고 개방한 뒤, 해당 파일에 "Hello" 라는 문자열을 쓰는 로직이잖아요? 하지만 소스코드 레벨에서는 어쨌건 fp 라는 구조체 포인터를 할당하고 하는 과정에서 메모리(엄밀히 말하면 가상 메모리)를 사용하게 되고 있구요! 그러면 위 함수같이 순수하게 I/O 동작만 수행할 경우는 CPU는 전혀 관여하지 않고 유휴 상태라고 보면 되나요? 흔히, I/O Bound 작업에서는 CPU가 관여하는 부분이 없기 때문에 비동기로 처리한다고들 하는데.. 이 말은 I/O 작업에서는 CPU가 하나도 사용되지 않고 메모리와 파일 시스템과 상호작용하는 Kernel 정도만 사용한다고 보면 될까요? 약간 질문이 난해할 수 있을 것 같은데.. 답변 주시면 추가로 궁금한 점은 재질문 드리겠습니다!
-
해결됨독하게 시작하는 C 프로그래밍
동적 배열을 만들 때 realloc을 사용하나요 보통?
원래는 malloc하고 memcpy를 모를때는 반복문으로 복사하고, 이후 free하고 다시 새로 malloc한 주소값을 대입하였습니다.이번 강의에서 realloc을 배우고 이렇게 바꿀 수 있었습니다.그러면 실제로 동적 배열 만들때는 주로 realloc을 사용할 것 같은데, 강사님께서 realloc을 쓸일이 거의 없다고 하셨습니다. 설명해주신 미리 할당을 받아두고 memory pooling을 구현하기 때문인가요?아니면 대부분 동적이 아닌 예상할 수 있는 수치의 고정된 크기로 잡을 수 있기 때문에 realloc할 일 조차 없기 때문인가요? 그도 아니면 c에도 동적 배열을 사용하기 위한 라이브러리가 있어서 인가요? 항상 양질의 강의 제공에 감사드립니다.
-
해결됨독하게 시작하는 C 프로그래밍
%d와 %d 사이에 공백이 없다는 점에 주의
문자, 정수 입력 개행문자 제거 부분입니다.scanf_s("%d %d", &x, &y);scanf_s("%d%d", &x, &y);음 이게 공백이 있든 없든 둘다 똑같이 동작하는데 무슨 의미가 있는거죠??
-
해결됨독하게 시작하는 C 프로그래밍
24년 8월 기준 비주얼 스튜디오 2019 버전 다운로드 방법
C#,C++ 관련 코드를 공부하기 위해서 비주얼 스튜디오 2019 버전을 다운로드 하려고 하는데다운르도 홈페이지 들어가니깐 community 버전 다운로드 버튼이 활성화가 되어있지 않던데혹시 다른 방법 아시는 분들 있는지 싶어서 글 작성해 봅니다 !!! 부탁드리겠습니다 ㅠㅠ
-
해결됨독하게 시작하는 C 프로그래밍
동적 할당 메모리 질문
안녕하세요! 현재 강사님의 동적 할당 메모리 강의에서 아래 예제 소스코드를 파헤쳐보고 있는데요! #include <stdio.h> #include <stdlib.h> int main(void) { int* pList = NULL; pList = (int*)malloc(sizeof(int) * 3); pList[0] = 10; pList[1] = 20; pList[2] = 30; for (int i = 0; i < 3; ++i) { printf("%d\n", pList[i]); } free(pList); return 0; }그런데 디버그 모드로 실행하면서 메모리 뷰를 보고 있는데, 잘 이해가 되지 않는 지점이 있어 질문드립니다.(제가 개인적으로 MacOS를 사용해서 CLion 이라는 IDE를 쓰긴하는데, 강의 속 visual studio 처럼 메모리 뷰를 보는 기능은 동일하게 제공해주어서 제가 사용하는 IDE 첨부사진인 점 양해 부탁드리겠습니다 (__) ) 우선 break point를 아래처럼 라인 바이 라인으로 설정한 후 하나씩 실행해보고 있는데요. 한 step 씩 사진을 첨부하면서 설명을 하겠습니다.1.정수 포인터 변수인 pList 에 주소 연산자(&)을 써서 "정수 포인터 변수의 메모리 주소"를 확인 => 64비트 운영체제 컴퓨터에서 포인터 변수는 8바이트(64비트) 크기를 차지하기에 이것은 이해가 됩니다2.정수 포인터 변수인 pList를 메모리 윈도우에서 확인=> 이 부분이 명확히 잘 이해가 가지 않습니다. 일단 pList를 메모리 윈도우에 입력했을 때 pList가 '정수' 타입으로 선언했기 때문에 사진 속 초록색 영역이 4바이트(32비트) 크기인 것은 알겠는데, 초록색 영역에 들어있는 "ff c3 00 d1" 은 의미가 무엇인가요..? 사실 근본적으로 pList가 정수 포인터 변수인 것은 알겠는데, 메모리 윈도우에 pList 를 입력했을 때랑 &pList 입력했을 때의 차이가 명확하게 무엇인지 스스로에게 설명을 못하겠습니다..3.다음 break point로 한 step 실행한 뒤, pList에 주소 연산자(&)를 써서 메모리 윈도우를 확인=> 소스코드에서 pList에 NULL을 할당했기 때문에 아래 사진 속 메모리 윈도우에서 빨간색으로 변한 영역이 0으로 변한 것은 이해가 갑니다.4. 3번 단계에서 메모리 윈도우에서 pList를 입력한 후 확인=> 이 부분도 잘 모르겠습니다. pList를 메모리 윈도우에 입력하니까 failed to read memory 메세지가 뜨면서 메모리를 읽지 못한다는 문제가 발생했는데, 왜 읽지 못하는 것인지.. 이해가 가질 않습니다.5. 다음 break point로 한 step 실행한 뒤 pList를 메모리 윈도우에 입력한 후 확인=> 소스코드에서 malloc() 함수가 정의되어 있는 라인이 실행된 후에야 4번에서 발생한 문제가 사라지더라구요. 4번에서 발생한 문제의 원인을 모르니 5번에서 왜 문제가 해결되었는지도 연쇄적으로 잘 이해가 가지 않네요..혹시 위 5개 단계에서 제가 질문한 부분에 대해 답변 가능하신지 여쭙습니다. 동일한 visual studio 환경이 아니라 죄송합니다 ㅠ 천천히 답변주세요! 기다리겠습니다 🙂
-
해결됨독하게 시작하는 C 프로그래밍
함수 이름의 메모리 주소
안녕하세요~ 강의 열심히 따라가다가 그동안 배워온 것들 복습을 진행중입니다. 그러다가 함수 관련해서 질문이 있는데요! 강의 속에서 함수를 정의하면 해당 함수의 이름에는 배열처럼 메모리 주소가 할당된다고 하셨는데요! 좀 더 자세히 살펴볼려고 디버그 모드로 정의된 함수 이름에 어떤 메모리 주소가 들어가 있는지 살펴보고 있었습니다. Q1. 그런데 특이하게 디버그 모드를 최초로 실행할 때부터 함수 이름에 메모리 주소가 일종의 쓰레기값..(사진 속에서는 16진수로 ff 값이 적혀있네요)으로 정의되어 있고 이후 코드 실행 step 을 계속 실행시켜도 별다른 값으로 업데이트가 되지 않더라구요. 그렇다는 것은 런타임에 들어가기 전부터 빌드 타임에 함수 이름에는 메모리 주소가 최초로 1번만 할당되고 런타임 때는 할당되지 않는 것으로 이해하면 될까요?(마치 size of 연산자처럼 컴파일 연산자 처럼요..비교가 좀 다를 수 있긴 합니다만..) Q2. 함수의 메모리 주소도 포인터를 이용해서 막 여기 저기 활용하는 사례도 많나요??(마치 문자열이나 다른 배열을 포인터로 활용하는 것처럼..) Q3. 그리고 어쨌건 최초로 변수를 선언하고 정의할 때 메모리가 할당되는 시점은 무조건 빌드 타임에 할당되는 것이죠? 그러면 런타임에 메모리가 할당되는 시점도 있나요..? 자꾸 헷갈리네요! 혹시 질문이 이해가 안가신다면 답글 달아주세요! 감사합니다 :)
-
해결됨독하게 시작하는 C 프로그래밍
쉬프트연산에서 궁금한점이 있습니다.
곱셈, 나눗셈 할 때 CPU가 비트를 왼쪽, 오른쪽으로 쉬프트연산을 하는건 이해가 됩니다.그런데 유효 비트자리수를 넘어가면 절삭이 되잖아요.절삭이 되면 사실상 데이터를 잃어버리게 되는것인데절삭이 될지 안될지 어떻게 미리 알고 곱셈, 나눗셈을 연산하나요?
-
해결됨독하게 시작하는 C 프로그래밍
unsigned short가 64KB 라는게 이해가 안됩니다.
"정수형" 강의의 5:45 쯤에 나오는 내용입니다.unsigned short는 표현범위가 0~65535인데용량으로 환산하면 64KB 라고 말씀하신 내용이이해가 안됩니다.65535는 (2의 16승 - 1) 이라서 16비트 용량인것 같은데 64KB용량이라고 하시니 헷갈립니다.만약 65535를 단순히 K단위로 환산하면 65K가 나오는데 이를 또 65K가 아닌 64KB라고 하시니... 제가 어느부분을 놓치고 잇는 건가요?
-
해결됨독하게 시작하는 C 프로그래밍
질문은 아니지만, VS가아닌 VScode를 통하여 메모리 보는법 공유해봅니다
강사님께서는 VS를 통하여 영상을 올리셨습니다만,많은 분들께서는 저처럼 VScode를 사용하고 있을거라 생각합니다 제가 서칭하여 얻은 결과가 도움이 될까하여 공유해봅니다혹시 문제가 된다면 글 내리겠습니다! @@ 아래 과정은 영상의 코드를 그대로 사용합니다-- 수정 --VScode Extension에서 MemoryView를 검색하여 다운영상의 예제코드, F5 클릭으로 디버깅 수행그러면 하단 터미널 레이아웃 목록에서, MEMORY 목록이 뜰겁니다 클릭해당 레이아웃 상단의 + 버튼을 클릭합니다영상에서처럼 변수 이름을 입력합니다 ( &test )( 변수일 경우 &변수이름 , 배열일 경우 배열이름 입력 )이어서 디버깅 수행하시면 메모리 값을 볼 수 있습니다저는 성공적으로 메모리값을 보고 있지만 혹시나 안되시는분들은 MemoryView Extension 관련해서 직접 찾아보길 바랍니다 :)