안녕하세요 19분 30초 쯤에 동적할당으로 할당받은 메모리를 free를 통해 반납하는 내용인데요 printf("Before free %p\n", ptr); free(ptr); // no action occurs when ptr is NULL printf("After free %p\n", ptr); 위 코드를 실행했을 때 free하기 전 동적할당받은 메모리를 가리키는 포인터 주소와 free한 후의 포인터 주소는 여전히 같음이 나옵니다. 그렇다면 free로 해제를 해도 전에 할당받았던 메모리에 대한 주소를 포인터ptr이 여전히 가지고 있다는 것인데 이렇게 된다면 free가 무색하게 계속 그 메모리에 접근 할 수 있는 거 아닌가요? 물론 free를 함으로써 그 메모리에 대해 할당하고 회수할 컨트롤 권한? 은 os가 다시 가져간다는 것은 이해했지만 약간 명시적인 측면도 있는 건지 궁금합니다.
python-telegram-bot 20 버전부터는 비동기 프로그래밍이 적용되어 강의와는 다른 코드가 필요합니다. https://github.com/python-telegram-bot/python-telegram-bot/wiki/Introduction-to-the-API 위 깃허브 python-telegram-bot 공식 위키 페이지로 가시면 필수적이고 간단한 용례들을 보실 수 있습니다.
CUDA 프로그래밍 (1) - C/C++/GPU 병렬 컴퓨팅 - CUDA 커널 kernel
좋은 강의 고맙습니다. 병렬처리라면 일반적으로 다른 쓰레드에 영향을 주지 않고 수행이 될거라 생각이 됩니다. 예제 코드에서 hello<<<1,8>>>(); 을 이용하여 쓰레드 8개를 병렬로 돌리는데 출력된 값은 hello CUDA 0! hello CUDA 1! hello CUDA 2! ,,, hello CUDA 7! 이 되는 것을 볼 수 있는데 병렬로 처리된다면 출력 되는 숫자가 순차적으로 나올 수 없는 것 아닌가요?
안녕하세요! 항상 좋은 강의 만들어주셔서 감사합니다! 강의 완강 후 복습하며 자료구조 구현 중에 질문이 있습니다. 이중 연결 리스트 구현 중 새로운 노드를 추가한 뒤, 앞뒤 노드의 pPrev와 pNext를 바꿔주는 과정에서 처음에는 pPrevNode를 새로 정의하지 않고 주석 처리한 부분으로 앞 노드와 관계를 정리했는데, 이렇게 하니 이전 노드의 pNext의 값이 pNewNode의 주소로 제대로 바뀌지 않는 것 같았습니다. 혹시 이렇게 되는 이유가 궁금합니다
안녕하십니까? 강사님 교재 chapter 11장 5번 연습문제를 풀기 위해 coding을 했습니다. 프로그램은 작동 하는데 첨부 화면캡처 사진 14번행에 밑줄이 생겼는데 읽어봐도 무슨 말인지 알수가 없습니다. 설명을 부탁드려도 될까요? 혹시 저 밑줄을 없앨 수 있는 방법이 있을까요? 수고하십시오
해당 강의에서 작성하는 코드를 그대로 실행하면 되지 않습니다. 현재 iframe 태그가 자바스크립트를 통해 실행되기 때문에 페이지가 로드된 후에도 자바스크립트가 실행될 시간이 필요합니다. 강의처럼 iframe의 주소만 따와서 실행시키는 것이 아닌 전체 주소를 가져와 iframe 태그로 전환시켜주고 자바스크립트 실행까지 기다려 주는 방식으로 진행하셔야 합니다. https://velog.io/@os_js/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%9B%B9-%ED%81%AC%EB%A1%A4%EB%A7%81%EC%9D%B4%EC%9A%A9-%ED%85%94%EB%A0%88%EA%B7%B8%EB%9E%A8-%EC%B1%97%EB%B4%87 저도 강의중 안됐던 내용이 있었기에 그에 대한 내용을 블로그에 올려두었습니다. 강의 진행대로 따라하다가 안되는 부분만 정리하여 올렸기 때문에 강의내용과 비교하시면서 보셔야 될 듯 합니다.
안녕하세요. 9.11 강의 17:01에서 강사님께서 "현재 상태에서 main.c 함수는 my_print_functions.c 파일에 대해서 알지 못해요"라고 설명해주시는데요. 이때 알지 못한다는 것을 compile 단계에서 알지 못한다고 이해해도 괜찮은가요? 즉, compile단계에서는 main.c 함수가 my_print_functions.c 파일을 알지 못하지만, linking 단계에서는 linker가 두 파일을 연결해줘서 build가 정상적으로 이루어진다고 이해하면 될까요? 아래 사진처럼 my_print_functions.h 파일을 무시하고 main.c에서 my_print_functions.c 파일을 바로 include해보았는데 에러가 나옵니다. 어떤 부분에서 잘못된 것인가요?
int number; printf("Please Enter a positive number\n"); while (scanf("%d", &number) != 1) { printf("Please try again\n"); while (getchar() != '\n') continue; } 이 예제에서 while (getchar() != '\n) continue; 가 없으면 어떤 알파벳 하나를 입력 했을 때 Please try again이 무한으로 출력이 되는데 그 이유가 뭔가요? 어떤 알파벳 하나를 입력하고 엔터를 누르면 알파벳 하나는 scanf로 들어가고 \n은 버퍼에 남는 것이 맞죠? 그리고 나서는 Please try again을 한번 출력하고 다시 scanf로 가서 버퍼에 남았던 \n이 입력으로 들어가서 버퍼는 비워지고 (scanf("%d", &number) != 1) 이라는 조건을 만족해 Please try again이 출력되고 다시 처음으로 돌아가 scanf 입력을 받기위해 대기해야하는 것 아닌가요? 왜 자꾸 please try again이 무한 출력되는지 모르겠어요 도와주세요
우선 강의 내용 정말 만족하면서 잘 듣고 있습니다. 섹션 16의 "가변 길이 입력에 대한 stack frame 손상" 강의편에서 Callee로 GetString 함수를 활용하여 디버깅 모드로 메모리 주소를 추적하는 과정에서 질문드려요. 스택 구조는 높은 메모리 주소에서 낮은 메모리 주소 방향으로 할당 받는 구조로 알고 있는데, char 배열이 int형 변수보다 낮은 메모리 주소에 할당이 되어서 질문 드립니다. 제가 따로 여러 변수들을 적용하여 디버깅 해보았는데도 마찬가지더라고요. 혹시, os에 따라 변수가 할당되는 스택 메모리의 순서가 다른건지 궁금해서 질문드려요.
시작하자마자 나오는 09_getcharSample을 직접 작성해보려하는데, 선생님 화면과 동일하게 파일을 만드는 방법을 모르겠습니다. 아예 처음인 사람은 사실 이렇게 시작하는방법부터 학습이 필요한데.. 어떻게 실행하면 될까요? 상단에 파일 - 새로만들기 - 프로젝트 - 빈 프로젝트 - 프로젝트이름 : 09_getcharSample 까지 하고 만들기 눌렀는데 코드를 입력하는곳이 안뜨네요