목록전체 글 (123)
Written by coh at home
동적 메모리가 필요한 다음과 같은 상황을 생각해보자. 우리가 어떤 배열을 쓸 것인데 이 배열의 크기를 우리가 변수로 지정해서 필요한 만큼만 쓰고 싶을 때. 근데 지금까지는 배열의 크기를 변수로 지정하는 것은 불가능했다. 왜냐면 변수의 크기는 stack memory에 올라갈 때 (stack frame or block) 결정되는데 배열의 크기는 컴파일 되는 시점에 결정되어야 memory를 할당할 수 있기 때문. 프로그램 실행 중에 사용자의 필요에 따라 메모리 크기를 결정하고 싶어서 이제부터 heap memory에 접근하게 된다. 문법은 다음과 같다. void* malloc(size_t size) heap영역에 size만큼 연속된 메모리 공간을 할당하게 되고 처음에 garbage값이 들어있다. paramete..
#include #define _CRT_SECURE_NO_WARNINGS #include #include #define N 1024 #define MAXNAME 64 typedef struct { int age; float score; char name[MAXNAME]; }student; //일일이 data입력하려면 귀찮으니 그냥 random variable로 지정. void set_student(student* dst) { dst->age = rand() % 100; dst->score = rand() % 100; int nameLEN = rand() % MAXNAME; for (int i = 0; i name[i] = 'a' + rand() % 26; } } ..
#include #define _CRT_SECURE_NO_WARNINGS #include #define max_num_student 255 enum action {add, fine, Exit}; typedef struct { int id; char name[8]; float score; }student; int fileopen(FILE** _fp, char* _filename, char* _mode); int selectaction(void); int printinfo(student* _info); int addstudent(FILE* _fp, student* _info); long finestudent(FILE* _fp, student* _info); int main(void) { FILE* fp = ..