프로그래밍 QnA

trymp의 이미지

linux kerenl modules 이 해제될 때, module 가지고 있던 메모리는 참조가 되나요?

linux kernel 에서 module 을 사용해서 insmod(), rmmod() 할 수 있잖아요?

가령 test.ko 라는 모듈이 있을 때,

[ linux buildin kernel ]
char *g_ptr = NULL;
EXPORT_SYMBOL(g_ptr);

[ test.ko ]
extern char *g_ptr;
g_ptr = kmalloc(10);
memcpy(g_ptr, "ABCD", 5);

위와 같은 형태로 되었을 때, g_ptr 을 해제하지 않고 rmmod test.ko 가 되었을 때
나중에 커널이미지에서 g_ptr 을 참조하면 어떻게 되나요?
printk("%s \n", g_ptr);

을 하면 g_ptr 은 아직 유효한 메모리라서 "ABCD" 찍히나요?
아니면 잘못된 메모리 참조로 패닉이 나나요?

회원들의 조언 부탁드립니다.

익명 사용자의 이미지

c언어 질문드립니다.

#define _CRT_SECURE_NO_WARNINGS
#include < stdio.h >

void main()
{

FILE *fp;

char s[1024];

printf("어떤 주제를 선택하시겠습니까?(228days.txt/beautyinside.txt/canada.txt/lens.txt/orion.txt):");
scanf_s("%s",s );

fp = fopen((char*)s, "r");

while (!feof(fp))

{

fgets(s, 500, fp);

puts(s);

}

fclose(fp);

}
이런식으로 코드를 짰는데 코드가 죽어버리네요..ㅜㅜ 왜그런걸까요?
또이 이후에 사용자가 어떤 단어를 입력하면 그단어의 좌우 20글자까지 같이 출력하는 프로그램을 만들어야하는데 이건 어떻게 해아 하는 건가요??

trymp의 이미지

linux kernel code 에서 list_head 와 hlist_head 의 차이?

리눅스 커널 코드에서 보면 그냥 단순한 list 가 있고 해쉬리스트로 hlist 가 있잖아요.

그 두개가 무슨 차이가 있는거죠?

그냥 list 쓰면 안되나요? 용도의 차이가 무었인진 궁금합니다.

알려주시면 감사하겠습니다.

익명 사용자의 이미지

메모리 사용법에 대해 질문하겠습니다..

안녕하세요..
atmega에서 내부 메모리 외부메모리에 대해 공부하고 사용하는 중인데 정말 이해가 안가서 질문합니다..

1. 외부 메모리의 주소가 0x2200에서 0xFFFF까지인데 하나의 atmega에 외부 메모리를 두개를 연결하였습니다.
그러면 메모리 1에서 사용되는 주소가 있다면 그 외의 주소를 입력하면 외부 메모리 2로 연결이 되는건가요?..

2.그렇다면 외부 메모리의 주소설정은..어떻게하는건가요...?

3. 외부 메모리 접근 때에는

MCUCR = 0x80;
XMCRA = 0xC1;
XMCRB = 0x80;

위의 레지스터를 설정하였었는데, 내부 메모리 때에도 레지스터를 설정해줘야 하는 건가요?

읽어주셔서 감사합니다.

bao의 이미지

c언어 free 관련해서 질문이 있습니다.

구조체 B {
...
...
}

구조체 A {
....

char * buf

....
}

main ()
{
A a;
B *b = (구조체 *B)malloc(sizeof(구조체 B));

a.buf = (char *) b;

}

위에 처럼 B 구조체의 정보를 A구조체의 char *에 저장을 해놓으려고 합니다. (char * 로 한 이유는 사실 아무 데이터 형이든 상관이 없지만 여기 buf에 다른 여러가지 구조체 정보가 상황에 따라 올수가 있어 그냥 char *로 하였습니다.)

이런 상황에서 free를 할때

free(buf)를 해도 메모리 누수가 생기지 않는지 궁금합니다.
생긴다면 어떻게 해야 하는지와... 메모리 누수가 생기지 않는다면 왜 안생기는지가 궁금합니다..

kutest의 이미지

vb6 컴파일오류

private declare~
 
public sub~
end sub
 
private function~
end function
 
private declare ~   (이부분)

(이부분) 이라는 곳에서
사진처럼 컴파일 오류가뜨는데 맨위로 올려야되나요

oeo0750의 이미지

c언어 오류 해결이 어렵습니다.

자료구조를 공부하면서
정수 리스트를 구성하고, 그 리스트 안에서 정수 num을 찾는 함수를 작성하는데,
리스트에 num이 있으면 함수가 num을 포함한 노드의 포인터를 반환하고, 없으면 null을 반환하는 함수입니다.

이 함수를 이용해서 리스트에서 num이란 숫자를 가진 노드를 삭제하는 프로그램을 작성하였습니다.
한 번 봐주시면 감사하겠습니다!

song689의 이미지

파일 디스크립터 관련 질문입니다!

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, char *argv[])
{
   int fd;
   if (fd = open(argv[1], O_RDWR) == -1)
      printf("파일 열기 오류\n");
   else printf("파일 %s 열기 성공 : %d\n", argv[1], fd);
 
   close(fd);
   exit(0);
}

위 코드를 실행시켜보았는데 fd가 0이 나오네요.
제가 예상한 결과는 3이 나와야될텐데 왜 0이나온거죠? 0,1,2는 기본적으로 할당되어있는 fd 아닌가요??

ljs0652의 이미지

scanf 질문이 있습니다.

char Time[24];
char A[20];
char B[20];

printf("입력 : ");
scanf("%s[^\n]", Time);
printf("입력 : ");
scanf("%s", A);
printf("입력 : ");
scanf("%s",B);

printf("Time : %s \n", Time);
printf("Time : %s \n", A);
printf("Time : %s \n", B);

이런식으로 입력을 받으면
Time에서 2018-01-01 까지만 받으면 셋다 정상적으로 받을 수 있는데
2018-01-10 20:20:20 이런식으로 받으면
두번째 A가 생략이 되고 세번째 B를 받게 됩니다 왜 이런 증상이 일어나는거죠??

익명 사용자의 이미지

scanf괄호 내에서 띄어쓰기 하는 거랑 안 하는 거랑 무슨 차이인가요?

예를들어 이런 scanf가 있으면
예시 1 : scanf("%d %c %d %c",......);
띄어쓰기를 안하면
예시 2 : scanf("%d%c%d%c",,,,,...); >>>이렇게 되는데, 그럼 %c에서 공백을 문자로 받던데 왜 형식지정자끼리 띄어쓰면(위의 예시 1) 그런 현상이 안 나타나는 것일까요

페이지

프로그래밍 QnA 구독하기