2013. 4. 29. 16:37

* 실제로 포인터를 사용하는 경우들

  - 동적으로 할당된 메모리를 사용하는 경우 ( p = new listNode())

  - 함수의 매개 변수로 변수의 주소를 전달하는 경우

  - 클래스의 멤버변수나 멤버함수를 호출하는 경우

 

1. 동적 메모리와 정적메모리의 차이는?

< 정적 메모리 할당 >

  - 프로그램이 시작되기 전에 미리 정해진 크기의 메모리를 할당 받는 것

      -> 메모리의 크기가 프로그램이 시작하기 전에 결정

      -> 프로그램의 수행 도중에 그 크기는 변경될 수 없다.

 

int i, j;

int buf[80];

char name[] = "hello world";

장점 : 간단하게 메모리 할당

단점 :  입력의 크기를 미리알 수 없는 경우 -> 더 큰 입력이 들어온다면 처리 못함

                                                          -> 더 작은 입력이 들어온다면 남은 메모리 공간 낭비

 

< 동적 메모리 할당(dynamic memory allocation) >

- 실행 도중에 동적으로 메모리를 할당받는 것

- 필요한 만큼의 메모리를 시스템으로 할당(new)  받아서 사용이 끝나면 시스템에 메모리 반납(delete)

 

 

2. 동적 메모리 위치

 - 힙(heap)

 - 힙이란 ? : 코드공간/ 전역공간/ 스택을 제외하고 남은 메모리 영역

 - 힙 장점? : 히프 할당받으면 함수가 종료되더라도 메모리 공간이 없어지지 않음!

                  but!!! 히프에서 할당받은 공간은 반드시 반납하여야 한다. :)

                  => 반납하지 않고 계속 할당만 받으면 시스템이 정지할 수 있음!

* C++에서 메모리의 구분

# 코드공간(code space) : 코드 공간에는 프로그램 코드가 저장된다.

# 전역공간(global namespace) : 전역 공간에는 전역 변수들이 생성된다.

#스택(stack)

  - 스택은 프로그램이 실행하면서 사용하는 공간

  - 주로 함수 호출 시 함수 매개 변수 / 함수의 지역변수를 생성하는 공간

  - 함수호출 후 자동적 소멸

#힙(heap)

 

3. 동적 메모리 반납이 필요한 이유

  동적 할당된 메모리는 자동적으로 반납되지 않는다!

따라서 할당된 메모리를 가리키는 포인터를 항상 가지고 있다가 메모리가 더 이상 필요 없으면 delete를 사용하여 시스템에 반납하여야 한다!!

if, 동적 할당된 메모리를 반납하지 않고 포인터를 없애버리면 메모리를 반납할 방법이 없다.

-> 따라서 메모리를 프로그램이 종료되기 전까지 할당된 상태로 남아있다!

이상태를 ? 메모리 누수(memory leak)!

  ==> 반복적으로 메모리 누수가 일어나면 최종적으로 메모리 부족 현상초래!

 

 

 

 

출처 : POWER C++ / 천인국 저

 

 

 

Posted by Triany
2012. 11. 3. 18:12

 

프로그래밍은 상당히 즐겁다.

 

대학교 1학년, 22살의 약간은 늦은 나이에 시작한 프로그래밍.

C언어로 부터 시작해서, C++, JAVA, JSP, SQL문, 리눅스/유닉스 프로그래밍,

윈도우프로그래밍(MFC), 파이썬, PHP, Android프로그래밍, 루비 등등...

 

여러 프로그래밍 언어들을 접해왔지만, 각 언어당 매력이 있어서 신기하면서 재밋다.

단, C언어 코딩하다가 C++의 함수가 나오기도 하고,

JAVA를 코딩하다가 Python 코드가 나오기도 하고..

섞이기도 하지만..

 

뭔가 만들고, 창조하고,

또 설계하고, 생각하는게

 

너무나 재밋고 신기하다! ^ ^ !!

 

 

주말을... 불태우는건 좀 서글프지만..ㅠ_ㅠ

오늘도 화이팅!

Posted by Triany
2012. 10. 26. 20:17
Posted by Triany
2012. 10. 26. 18:18

mButton2.setEnabled(false);
mButton2.setClickable(true);

 

View 보이게 / 안보이게 하기     

ButtonAct.setVisibility(View.VISIBLE);
     EditAct.setVisibility(View.GONE);

 

 

'Android' 카테고리의 다른 글

리스트 뷰, 구분선 제거법.  (0) 2011.08.27
[json] arraylist 사용해 보기  (0) 2011.08.19
tomcat 과 DB2 연동하기  (0) 2011.08.12
win7에서 아파치 톰캣 7 설치하기 -  (0) 2011.08.12
[JSON] JSON 파서 1 _ JSON파서란?  (0) 2011.08.08
Posted by Triany
2012. 9. 25. 20:44

인턴이 마친 9/1 - 9/25. 약간의 휴식기를 가졌던 것 같다.

복학하고 어리버리한 상태에서, 어물쩡 어물쩡 하다보니 벌써 한달이 다 갔다.ㅠㅜ

 

이제 다시 정신 차려야지 :)

 

이번학기(4-1학년도. 가을학기)계획을 상콤하게 세워보장!

 

[따야 할 자격증]

1) 한국사 능력검정시험  (10/27)

2) 리눅스마스터 (10/29-11/13)

3) 토익 (11/25)

(중간에 Opic 한번 보기)

 

 

[가장 급한것 -> 영어]

1) 스피킹 훈련 : (Sarah, ) 원서 낭독 + 전화영어(할 예정)

2) 리스닝 훈련 : Listening Expert & 모던패밀리(미드)

3) 문법 공부 : 진수어학원 교재

4) EBS 토익 750 강의 다시 듣기

 

 

[전공관련]

- 네트워크(CCNA)

- 리눅스

- C++(전문적인 지식 필요. 템플릿 및 STL까지 습득)

- 리버싱

- 웹해킹 및 보안

 

[잠정적인 계획]

겨울방학 : 네트워크 회사 (보안이든 일반이든)  or  개발회사 인턴쉽

 

Posted by Triany
2012. 8. 1. 16:21
import sqlite3
conn = sqlite3.connect('example.db')

c = conn.cursor()

# Create table
c.execute('''CREATE TABLE stocks
             (date text, trans text, symbol text, qty real, price real)''')

# Insert a row of data
c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")

# Save (commit) the changes
conn.commit()

# We can also close the cursor if we are done with it
c.close()

 

select 옵션( ?  or %s )

# Never do this -- insecure!
symbol = 'RHAT'
c.execute("SELECT * FROM stocks WHERE symbol = '%s'" % symbol)

# Do this instead
t = (symbol,)
c.execute('SELECT * FROM stocks WHERE symbol=?', t)

# cur.execute("insert into people values (?, ?)", (who, age))
print c.fetchone()

# Larger example that inserts many records at a time
purchases = [('2006-03-28', 'BUY', 'IBM', 1000, 45.00),
                   ('2006-04-05', 'BUY', 'MSFT', 1000, 72.00),
                   ('2006-04-06', 'SELL', 'IBM', 500, 53.00),
                 ]
c.executemany('INSERT INTO stocks VALUES (?,?,?,?,?)', purchases)

 

c.execute   or fetchall()  <-- return  matching rows.

for row in c.execute('SELECT * FROM stocks ORDER BY price'):
        print row

(u'2006-01-05', u'BUY', u'RHAT', 100, 35.14)
(u'2006-03-28', u'BUY', u'IBM', 1000, 45.0)
(u'2006-04-06', u'SELL', u'IBM', 500, 53.0)
(u'2006-04-05', u'BUY', u'MSFT', 1000, 72.0)

 

Connection.create_function(name, num_params, func)

Creates a user-defined function that you can later use from within SQL statements under the function name name. num_params is the number of parameters the function accepts, and func is a Python callable that is called as the SQL function.

The function can return any of the types supported by SQLite: unicode, str, int, long, float, buffer and None.

import sqlite3
import md5

def md5sum(t):
    return md5.md5(t).hexdigest()

con = sqlite3.connect(":memory:")
con.create_function("md5", 1, md5sum)
cur = con.cursor()
cur.execute("select md5(?)", ("foo",))
print cur.fetchone()[0]

 

출처 : http://docs.python.org/library/sqlite3.html

디비구축.zip

Posted by Triany
2012. 5. 12. 11:33

    소연이에게 추천받은 토목달 :)

    3월 무렵부터 좋다고 계속들어왔는데!

    5월무렵 :) 드디어 시작!!

 

    운이 좋게도 신청하려 보니 300명 한정 '수퍼기수' 모집이었다!! 

   바로 예약 들어가고!

   기존 기수와 어떤 혜택이 차이가 있는지 봐보니...

 

 

   요러콤 혜택이 많다는!

   벌써부터 머리에서 계산기 돌아가는 소리가 들리고!!

   토목달 수퍼기수 750반 신청!

   197,000원이니까!

   50 % 환급받으면..

   197,000 -   (19700 * 0.5)  = 98500원!

   열공해서 토익점수 750점 넘기면 토익 응시료 지원 42,000원!

   197,000 - (19700 * 0.5) - 42,000 = 56,500원!

   매일매일 수강일기써서(30일 치) 문화상품권 50,000원 획득

   197,000 - (19700 * 0.5) - 42,000 - 50,000 = 6,500원!

   우와 우와 :) 일단 저 세개는 달성할 각오가 되어 있숨!

   계다가 24,000원 어치의 교재는 무료로 제공 받았으니까! (택배비 빼면 21,500원) - 택배비 2,500원

   6,500 - 24,000 = -17,500

   성실히! 열심히 하면 17,500원은 오히려 번샘!! !!

   너무 계산적인가?

   여튼!! 충분한 동기 부여가 된 듯!

  

   열심히 해봐야지

   영어 정복! 고고씽+_+!!

 

 

'English > 토목달:)' 카테고리의 다른 글

14/5/20(화) 영어회화 study의 기록!  (0) 2014.05.22
Posted by Triany
2012. 5. 12. 11:19

 출처 : http://news.nate.com/view/20120512n01940

【서울=뉴시스】문예성 기자 = '오전에는 학생 오후에 청소부.' 최근 미국 명문 콜롬비아대에서 청소부로 20년 가까이 근무하다 마침내 콜롬비아대 학사 학위를 받은 50대 청소부의 훈훈한 이야기가 감동을 주고 있다.

뉴욕 데일리 뉴스에 따르면 이 대학에서 20년 가까이 청소부로 근무해 온 전 유고슬라비아 출신 가치 필리파즈(52)는 오는 16일 졸업식에서 고전문학 학사 학위를 받게 된다.

그는 지난 1992년 내전으로 파괴된 고국에 가족을 남겨두고 미국에 왔다. 미국에 왔을 때만 해도 그의 영어 수준은 단어 몇 개 만 구사하는 정도로 형편없었다.

콜롬비아대는 모든 직원들에게 무료로 수업을 들을 기회를 제공하므로 필리파즈는 오전에 수업을 듣고 오후 2시반부터 11시까지 캠퍼스를 청소하는 일을 했다. 밤늦게 근무를 마치고 집에 돌아온 후에도 공부를 계속하며 학업에 게을리하지 않았다.

그는 "어떤 날들은 정말 피곤했다"며 "이 시간들은 나에게 정말 힘든 순간이었다"며 기억을 떠올렸다.

또한 일을 병행해야 했기 때문에 그는 한 학기에 두 과목밖에 이수하지 못했고, 이번에 마침내 모든 학점 이수를 마쳤던 것이다.

향후 진로에 대해 그는 이 대학의 청소부로 석사와 박사 과정을 마칠 예정이라고 밝혔다.

그는 "나의 꿈은 이제 절반만 이뤄졌고 석사와 박사 과정을 모두 마치는 것이 최종 목표"라고 강조했다.

또 "청소부보다 더 좋은 일자리를 얻을 수 있다면 좋은 일이지만 그게 아니라면 콜롬비아대에 머물 것"이라며 "청소부의 일을 절대 부끄럽게 생각하지 않는다"고 덧붙였다.

'Simple's.... > 일상' 카테고리의 다른 글

프로그래밍은..  (0) 2012.11.03
다시 3개월 시작.  (0) 2012.09.25
3학년의 마지막 나날들  (0) 2011.12.17
11.4.10 ... 여러 생각들..  (0) 2011.04.10
[펌] 프로그래밍 공부법  (0) 2011.03.22
Posted by Triany
2012. 5. 10. 17:57

새로운 엑셀파일 생성

import xlwt

wbk = xlwt.Workbook()
sheet = wbk.add_sheet('2012.05', cell_overwrite_ok=True)   #덮어쓰기 가능 설정
sheet.write(0,0,'date')
sheet.write(0,1,"count")
sheet.write(0,2,"size")       #시트에 데이터 기록

wbk.save('test.xls')          #데이터 저장(저장과 동시에 엑셀파일 생성)

xlwt.Workbook() : excel workbook 만들기.

  • wbk.add_sheet("")  : sheet 추가.
  •                                         - cell_overwrite_ok=True 설정을 해 두면 덮어쓰기 가능
  • sheet.write(행, 열, data)로 값 기록
  • wbk.save("file name")으로 file 저장!
  •  

    기존 엑셀 파일로 작업

    (xlrd 모듈 필요)

    다운경로 : http://pypi.python.org/pypi/xlrd/0.7.1

    import xlrd

    xls = xlrd.open_workbook('test.xls',formatting_info=True)  #엑셀파일 open
    sheet_01 = xls.sheet_by_index(0)  # 0번째 시트 정보 가져옴 
    print r_sheet

    엑셀 전체 시트수 : xls.nsheets

    시트 불러오기

    xls.sheet_by_index(0) #index로 불러오기

    xls.sheet_by_name(u'Sheet1') #이름으로 불러오기

    A시트에 대해서

    sheet_01.name : 시트명

    sheet_01.nrows : 시트 행 수

    sheet_01.ncols : 시트 열 수

    firstColumn = sheet_01.col_values(0) #0번째 컬럼 전체 읽어옴

    sheet_01.cell_value(rowx=0, colx = 2) : 1행 C열의 값 반환

    first_column = sh.col_values(0)

     

    엑셀에 한글 입력하기

    book = xlwt.Workbook(encoding='utf-8')
    sheet = book.add_sheet('첫번째시트')
    sheet.write(0, 0, '한글')
    book.save('unicode0.xls')

     

    고급 엑셀 기능 사용 관련 예제 사이트

    https://secure.simplistix.co.uk/svn/xlwt/trunk/xlwt/examples/

     

    Posted by Triany
    2012. 1. 6. 01:16

    HBRUSH CASNConverterDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    // TODO: 여기서 DC의 특성을 변경합니다.
    if(nCtlColor != CTLCOLOR_EDIT && nCtlColor != CTLCOLOR_LISTBOX){
    static CBrush s_brush(RGB(0, 0, 0));
    pDC->SetBkMode(TRANSPARENT);
    pDC->SetTextColor(RGB(255, 255, 255)); //글자색(일괄 변경)
    pDC->SetBkColor(RGB(0, 0, 0)); //배경색
    return s_brush;
    }
    // TODO: 기본값이 적당하지 않으면 다른 브러시를 반환합니다.
    return hbr;
    }

    'Windows Prog' 카테고리의 다른 글

    나이계산  (0) 2012.01.05
    프린트(이전 적용 내용)  (0) 2012.01.04
    툴바 없애기  (0) 2012.01.01
    프린트(버튼클릭시)  (0) 2012.01.01
    뷰 크기 지정  (0) 2011.12.31
    Posted by Triany