본문 바로가기
코스웨어/11년 내장형하드웨어

[내장형]2011.11.28 일일보고서 - 정선주

by 알 수 없는 사용자 2011. 11. 28.
728x90
반응형


 


using  namespace Cat;

이 밑으로는 모든 고양이로 선언 되어 버린다.

 

using namespace::Create All; :  모든 고양이 생성한다.

 

// Example.h
// a.cpp에서 정의된 g를 사용하기 위한 준비

extern int g;

int main()
{
    g = 200; // 실패
    
    return 0;
}

 

이건 C에서 사용하는 방법이고

 

namespace
{
    int g;
}

void Func()
{
    g = 200; // 성공
}

 

이건  C에서  extern을 사용하는 것과 같이 C++에서 사용하는 방법이다






image

 

붉은 색 사각형은 trmplate 함수이다

 

UML(Unified Modeling Language)

 

표준화한 모델링 언어

 

모델을 기반으로 소프트웨어를 개발하고자 할 때 유용하다.

요구분석, 시스템 설계, 시스템 구현 등의 시스템 개발 과정에서 고객과 개발자 또는 개발자들 상호간의 의사소통을 원할하게 하기 위해서 표준화한 모델링 언어이다.

방법론이 아닌 소프트웨어 개발에 사용되는 다이어그램을 정의하는 것으로 비주얼 하게 표현한다

 

image

 

#include<iostream.h>
#include<iomanip.h>

int main()
{
    cout.width(10);    // 출력된 공간의 크기를 지정
    cout << 333 <<  "," << 334 << endl;

    cout.setf(ios::fixed);    // 일단 이러게 하면 실행은 됩니다
//  cout.setf(ios_base::fixed);    // 이건 ios_base를 찾을 수 없다고 에러
    cout.precision(2);
    cout << 3.33333 << endl;

    cout.fill('*');    // 빈 칸을 채우는 함수
    cout.width(10);
    cout << 333 << endl;
}

 결과

333,334
3.33
*******333

 

#include <stdio.h>

#define MAX 10

// 구조체 선언
typedef struct _Node    
{
    char Data[96];
    struct _Node *next;
}Node;

void MM_init();
void *MM_malloc(unsigned int k);

Node DATA[MAX];
Node *Empty;

unsigned int NUM;

int main()
{
    char *H;
    MM_init();    // MM_init 함수 호출
    H = (char*)MM_malloc(96);    // MM_malloc 함수 호출

    sprintf(H,"0x08X 안녕하세요\n",100);    // 동적할당을 받은 곳에 0x08안녕하세여 

    printf(H);    // sprintf로 적은 걸은 화면에 표시한다
    
    return 0;
}

void MM_init()
{
    int icnt;

    for(icnt=0;icnt<MAX; icnt++)
    {
        DATA[icnt].next = &DATA[icnt+1];    // 연결리스트 연걸하기 위해서 
    }

    DATA[icnt].next = 0;    // 마지막에 NULL을 집어 넣는다
    Empty = DATA;        // Empty가 DATA를 가르킨다
    NUM = MAX;    // NUM에 define되어있는 값 10을 집어 넣는다

    return; 
}

void *MM_malloc(unsigned int k)
{
    unsigned int uicnt;
    Node *temp;
    
    k = (k/97)+1;
    
    if(k>NUM)
    {
        return 0;    // K가 NUM보다 크면 NULL을 리턴한다
    }
    
    temp = Empty;    // temp도 DATA를 가르킨다 왜나면 Empty가 DATA를 가르키고 있디
    
    for(uicnt=0;uicnt<k;uicnt++)
    {
        Empty = Empty->next;    // Empty를 연결리스트 끝까지 이동시키기 위해서
    }

    NUM = NUM-k;    // 블럭 수

    return temp;    // temp 리턴
}

 

image

 

하지만 이 연결 리스트에 문제점이  있다 96Byte를 요구하나 1Byte를 요구하나 한 블럭 식 무조건 주고, 1Byte로 줄이면 자료는 1Byte되 그걸 유지 하는 포인터는 4Byte이다 이러게 하면 유지하는데 너 많은 메모리를 쓰게 된다 쉽게 말해서 오버헤드가 일어 나는 것이다

 

결과

0x08X 안녕하세요


저도 이해가 잘 안가서 그래서 적었습니다 부족한게 많을꺼예여 그건 양해 부탁 드림
728x90