프로그래밍 QnA

pianolove1216의 이미지

C++ 연산자 오버로딩에 관한 심플한 질문 하나 드립니다.

사실 어느 프로그래밍 교재를 보더라도 연산자 오버로딩은 피연산자가 객체인 경우를 대상으로 한다고 되어 있더군요.
+ 연산자가 오버로딩 된 경우,

ex) MyClass obj3 = obj1 + obj2; 는

operator+(const MyClass obj1, const MyClass obj2) 함수에서 정의한 대로 연산이 될 것입니다.(전역 함수로 연산자 오버로딩 한 경우)

그런데 일반 상수나 변수(primitive)의 연산에 쓰이는 + 연산자의 경우에도 일종의 연산자 오버로딩된 operator+ 함수 중의 하나로 봐야되는 건지요?

우리가 아무렇지도 않게 쓰는 3+4; 와 같은 연산문에서도 이 + 연산자가 내부적으로 operator+(int val1, int val2)함수와 유사한 형태로 정의되어(오버로딩 된) 있는건지 궁금합니다.

park27001의 이미지

BZIP2 압축 전후 사이즈의 차이에 대한 질문입니다.

어떤 시스템의 펌웨어를 분석해보려고 합니다.
일단 펌웨어를 분해하니 kernel 이라는 이름의 elf 파일을 하나 얻었는데, 이를 뜯어보니 내부에 BZIP2 압축으로 실질적인 커널이 숨어있었습니다.

여기서 질문입니다.
이렇게 얻은 BZIP2 파일의 크기는 3097818 byte 이며 블록사이즈는 900k입니다.
이 파일의 압축을 풀고나니 9889130 byte 입니다.

여기서 이 파일을 그대로 900k 블록사이즈로 다시 압축하고나니(우분투 bzip2) 5164887 byte라는 사이즈가 되어버리는데,(그렇다고 후반부의 데이터가 0x00으로 채워져 있는 것도 아니고..)
이렇게 많이 차이가 날 수 있을까요? 어떻게 해야 비슷한 사이즈라도 만들 수 있을런지요?

bluesolip의 이미지

[완료] C++ 스트링 관련

안녕하세요.

text 파일에서 문자열을 읽어와 특정 문자열을 찾으려고 합니다.

- test.txt 내용
aaaaa
bbbbb
ccccc

- 코드 일부
char buffer[128];
ifstream testtxt ("test.txt");
while (! testtxt.eof() )
{
testtxt.getline (buffer,128);
strcmp(buffer, "bbbbb")
{
printf("find");
}
}

파일에서 정상적으로 읽어오는데 "bbbbb" 문자열을 못찾습니다.
그래서 길이를 비교해보니 파일에서 읽은 값은 길이가 6이고 "bbbbb"는 5 라 다르다고 판단한 것이었습니다.
파일에서 한라인을 읽어들일때 NULL값이나 줄바꿈 없이 스트링 "bbbbb"만 읽어오려면 어떻게 해야 하나요?
도움 부탁드립니다.

criny333의 이미지

addl $0x1,0xXXXXXXXX 코드의 사용중에 결과가 이상하게 나옵니다...

테스트 환경 :
머신 - x86_64 머신(AMD A8-4555M APU quad-core) (가상머신이 아닙니다)
OS - linux 3.13.0 32bit (kubuntu 14.04 32bit)

일단 소스는 다음과 같습니다.

criny333의 이미지

gcc에서 a++를 레지스터 거치지 않고 바로 덧셈하게 해주는 키워드가 무엇인가요??

아래 c언어 문장
***********
int a = 0;
main(){
a++;
}
***********

를 gcc로 컴파일 하면 "a++" 부분이
아래와 같은 어셈코드(nasm기준)로 생성됩니다.

***********
mov eax, dword[0xXXXXXXXX]
add eax, 0x01
mov dword[0xXXXXXXXX], eax
***********

이렇게 생성되지 않고 바로 메모리 덧셈을 실행시키는 어셈블리코드

***********
add dword[0xXXXXXXXX], 0x01
***********

이렇게 생성시키는 c언어 키워드나 다른 gcc시 옵션같은 것이 있나요?

ps) 원래 변수 선언시에 volatile 붙이면 저렇게 되는줄 알았지만, volatile은 다른 용도로 사용되더라구요...

leadha의 이미지

포인터를 리턴하는 함수에 대해 질문드립니다.

보통 malloc 을 쓰면 반드시 free 를 할 것을 염두에 둬야 한다고 하는데요,
이번에 소켓을 공부하면서 구조체 포인터를 리턴하는 함수들을 보고 있으니 갑자기 헷갈리더라구요.
그런 함수들이 내부 지역변수를 만든 이후에 반환을 할 수는 없을거고,
그렇다고 malloc 으로 구조체를 만든 이후에 반환을 하면 free 를 해줄 곳이 따로 없지 않나요?
구조체 몇개 프로세스 종료시까지 해제 안해준다고 별일 없기는 하지만...

이해가 안되어서 질문드려봅니다!

sihon321의 이미지

리눅스 ncurses 이용한 프로그래밍 질문있습니다 ㅠ

현재 리눅스로 tcp/ip를 이용해서 다중채팅프로그램 구현중인데요

ncurses를 이용해서 그래픽을 입혔습니다. 그런데 문제가 대화가 뜨는 부분이랑 대화를 치는 부분 두개로 나눴는데요

scroll기능을 입혔는데 대화가 창을 넘어가면, 보이는 내용이 새로운 내용이 아니라 전 내용이 움직이지 않고 가만히 있네요ㅠ

아마 새로운 대화내용은 밑에 계속 보이지않게 써지고 있는거같은데 ㅠ그러니깐 제 질문은

ncurses에서는 스크롤 기능이 대화화면을 따라가도록 지원하지 않나요ㅠ?

gusrnwka의 이미지

이거 해결좀 부탁드려요

제가 한번 짜본 코든데요

#include
int dut(int x)
{
int i,j,k;

printf("i와 j의 연산 결과는 ");
scanf("%d %d",&i,&j);

k=i+j;

printf("%d이다",k);

return k;
}

int bba(int x)
{
int i,j,k;

printf("i와 j의 연산 결과는 ");
scanf("%d %d",&i,&j);

k=i-j;

printf("%d이다",k);

return k;
}

int gob(int x)
{
int i,j,k;

printf("i와 j의 연산 결과는 ");
scanf("%d %d",&i,&j);

k=i*j;

qorrnjstn의 이미지

스트리밍서버 구성때문에 질문 드립니다.

스트리밍서버를 만들려고 하는데

교수님께서 vlc 나 다윈스트리밍 같은 프로그램 자체를 직접만들라고 하시거든요

그래서 rtp/rtsp 프로토콜을 이용해서 직접 만들어야하는데요

참고할 만한 자료나 사이트좀 알려주시면 안될까요 ㅜ 감사합니다.

xoduddk123의 이미지

/dev/input/event* 으로 상수 데이터도 보낼수가 잇나요???

input 이벤트로 데이터를 보낼려고합니다.

커널모듈에서 커널타이머를 일정간격으로돌면서

커널 타이머 핸들러함수가 호출되면

이 핸들러함수에서 input_report_*와 input_sync를통해서 이벤트를 보내보았습니다.

그런데 찾아보니 input_report_rel, input_report_abs, input_report_key에 해당하는 input을 보내는 함수들은

모두 키보드와 마우스 관련 함수들인걸로 보았습니다. 이 이외에도 ff와 sw등 몇개가 있는것 같기는한데

제가 원하는 임의의 상수를 event로 보내는 함수는 딱히 설정이없는것같습니다.

그래서 임시방편으로 input_report_rel함수를 통하여 상수값을 보내고 event value값을 읽어들이는형태로 하였는데

여기서 쓰이는 input_report_rel함수는 마우스의 상대적인 이동에 따른 event함수이기때문에 이렇게 사용하는게

올바른 방법은아닌것 같아서 마음에 걸립니다.

페이지

프로그래밍 QnA 구독하기