C_C++

pchero on June 29th, 2015

for 구문 사용시, 인덱싱하는 order 에 따라, 실행시간에 차이가 발생한다는 글을 보았다(참조: http://process3.blog.me/20030421397) 정말로 그럴까? 한번 확인해 보았다. 결론은? 확실한 차이가 있었다. 이유를 확인해보니, 메모리 캐시와 관련된 내용이었다.   — Program 1 #include <stdio.h> #define MAX_CNT 100 int main(int argc, char** argv) {     int i, j, k;     int test_data[MAX_CNT][MAX_CNT][MAX_CNT];     […]

Continue reading about memory indexing differences

pchero on August 7th, 2014

utime 은 파일의 Access time 및 Modification time 을 변경할 때 사용하는 함수이다. 특정 파일 정렬을 할 때, 파일의 이름을 파싱해서 정렬을 하는 것이 아닌, 파일의 Modification time 을 기준으로 정렬을 해야하는 경우가 있다. 이런 경우, 파일 작업 이후에도 이전의 Modification time 을 유지해야 하는 경우가 있는데, 이런 경우, utime 을 사용하면 편리하다.   utime […]

Continue reading about utime

pchero on July 30th, 2014

이번에 dirent 와 stat 을 이용하여 작업을 하면서 알게된 내용들을 간단하게 정리했다. dirent dirent 는 디렉토리 정보를 담는 구조체이다. dirent 와 scandir() 을 사용하면 디렉토리에 어떤 파일들이 있는지 간략하게 알 수 있는 속성과 파일 리스트 포인터를 이용할 수 있다. struct dirent { #ifndef __USE_FILE_OFFSET64 __ino_t d_ino; __off_t d_off; #else __ino64_t d_ino; __off64_t d_off; #endif unsigned […]

Continue reading about dirent, stat

pchero on February 21st, 2014

진행중인 프로젝트에서 Libevent 를 사용중인데.. valgrind 메모리 누수 확인시 자꾸 메모리 누수가 발생하는 것을 확인했다. 어디가 문제일까… 기능상으로는 문제가 없었다. malloc/calloc 할당한 부분도 문제가 없었다. valgrind 가 지목한 문제 발생한 부분은 event_new() 부분이었다. 문제 발생 원인은 잘못된 libevent 사용에 있었다. 나는 다음과 같이 프로그램을 개발했었다. /* * main.c * * Copyright 2014 Sungtae Kim <pchero21@gmail.com> […]

Continue reading about Libevent event driven memory leak

사내 HP-UX 서버에서 컴파일을 하다, 아래의 Warning 이 나왔다. Warning (suggestion) 887: “SharedMemory.cpp”, line 711 # Type ‘int’ is smaller than type ‘unsigned long’, unwanted widening in value may result.        memset(szTotalHexData, 0x00, (iSize * 3) + 1);                                      ^^^^^^^^^^^^^^   이유인즉, unsigned long type 이 와야 하는데, int type 이 왔다는 것. 이상할 것이 없어서 memset […]

Continue reading about size_t warning. int’ is smaller than type ‘unsigned long