본문 바로가기

Programming/C/C++19

sbrk(), brk() 함수 malloc(), new() . . . 시스템 콜 -> brk() - sbrk() 데이터 세그먼트의 영역을 넓혀준다. (세그먼트 끝을 연장) - man 페이지 -BRK(2) Linux Programmer's Manual BRK(2) NAME brk, sbrk - change data segment size SYNOPSIS #include int brk(void *addr); void *sbrk(intptr_t increment); Feature Test Macro Requirements for glibc (see feature_test_macros(7)): brk(), sbrk(): Since glibc 2.12: _BSD_SOURCE || _SVID_SOURCE || (_XOPEN_SOURCE >= 5.. 2012. 8. 6.
c언어 - 확장 유클리드 알고리즘 확장 유클리드 알고리즘이란? 정수 m, n의 최대 공약를 gcd(m, n)으로 나타낼 때 1. 확장된 유클리드 호제법을 이용하여, am + bn = gcd(m,n)의 해가 되는 정수 a, b 짝을 찾아낼 수 있다. 2. 특히, m, n이 서로소(gcd(m,n) = 1)인 경우 유용한데, 그럼 위의 식은 am + bn = 1이 되고, 여기서 a는 모듈러 연산의 곱의 역원(modular multiplicative inverse)이 되기 때문이다. 등식 : s*m + t*n = gcd(m, n) r = r1-q*r2 --> r1 = q*r2 + r //초기 r1, r2는 (m, n)이고 q는 몫 r은 나머지 s = s1-q*s2 //초기 s1, s2는 1, 0이다. t = t1-q*t2 //초기 t1, t2는.. 2012. 5. 26.
c언어 - 유클리드 알고리즘 유클리드 알고리즘이란? - 두 양의 정수들에 대한 최대 공약수를 찾아내기 위한 알고리듬 등식 : gcd(a,b) = gcd(b,a mod b) ex) gcd(44, 12)=gcd(12, 8) = gcd(8,4) = gcd(4,0) = 4 44와 12의 최대 공약수 -> 4 c언어 소스 #include #include int Euclid(int num1, int num2); int main() { int num1, num2, gcd; printf("두 정수를 입력하세요 : "); scanf("%d %d", &num1, &num2); if(num1 > num2) gcd = Euclid(abs(num1), abs(num2)); //절댓값으로 넣음 else gcd = Euclid(abs(num2), abs(nu.. 2012. 5. 26.
system()과 execl()의 차이 system()과 execl() 둘다 명령을 실행하는 함수 인데 무슨 차이가 있을까요? 일단 표면 적으로는 ls -al 같은 명령을 쓸때 system함수의 경우에는 system("ls -al") 처럼 사용하고 execl함수는 execl("/bin/ls", "ls", "-al", 0) 처럼 옵션을 다른 인자로 넘겨줘야 한다는게 차이가 있습니다. 그리고 한가지 더 보면 -> -> 위와 같이 system함수의 경우는 ls 명령어 실행 후 원래 프로그램으로 돌아와서 남아 있는 printf를 호출 합니다. 그런데 execl함수는 ls 명령어 실행 후 printf가 호출 되는 것을 볼 수 없습니다. ( execl를 호출 했을 때는 현재 프로그램이 /bin/ls라는 프로그램으로 덮어 씌워지는 것입니다. ) 따라서 e.. 2012. 5. 16.