메모리 동적할당

sz L·2023년 3월 23일
0

C++

목록 보기
11/40
post-thumbnail

malloc & free

C언어에서 메모리 동적할당
malloc : heap 영역 메모리 할당
free : heap 영역 메모리 해제

arr = (int*)malloc(sizeof(int));
free(arr);

#include <iostream>

int main()
{
	int size;
	int* arr;

	printf("배열개수: ");
	scanf_s("%d", &size);

	arr = (int*)malloc(sizeof(int) * size); // 메모리 동적할당

	printf("%d개의 숫자를 입력하세요.\n", size);
    printf("만들어진 배열 크기: %d\n", sizeof(int) * size);

	for (int i = 0;i < size;i++)
	{
		printf("%d번째 숫자: ", i + 1);
		scanf_s("%d", arr + i);
	}
	for (int i = 0;i < size;i++)
	{
		printf("%d\n", arr[i]);
		printf("%d\n", *(arr + i));
	}

	free(arr);

	return 0;
}


프로젝트 -> 속성 -> C/C++ -> 언어 -> 준수 모드를 보시면 '예(/permissive-)'라고 되어 있는 부분을 '아니요' 로 설정

#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
#pragma warning(disable:4996)

char* MakeStrAdr(int len)
{
	char * str = (char*)malloc(sizeof(char) * len);
	return str;
}

int main()
{
	char * str = MakeStrAdr(30);
	strcpy(str, "I am so happy");
	cout << str << endl;
	free(str);

	return 0;
}


new & delete

C++에서 메모리 동적할당
new : heap 영역 메모리 할당
delete : heap 영역 메모리 해제

#include <iostream>
using namespace std;

int main()
{
	int size;
	int* arr;
	cout << "배열의 개수를 입력하세요: " ;
	cin >> size;

	//동적 메모리 할당
	arr = new int[size];

	for (int i = 0;i < size;i++)
	{
		cout << i + 1 << "번째 숫자: ";
		cin >> *(arr + i);
	}
	for (int i = 0;i < size;i++)
	{
		cout << *(arr + i) << endl;
	}

	return 0;
}

profile
가랑비는 맞는다 하지만 폭풍은 내 것이야

0개의 댓글