new & delete
new & delete는 C++에서 동적할당을 하기 위해 사용합니다. malloc & free와 달리 인자를 바이트 크기대로 전달할 필요가 없고 형 변환도 필요 없다는 장점이 있습니다.
데이터형 * 포인터이름=new 데이터형; |
데이터형 * 포인터이름=new 데이터형[배열의길이]; //배열의 경우 |
delete 포인터이름; |
delete []포인터이름; //배열의 경우 |
그럼 new & delete를 사용하는 간단한 예제를 작성해 보겠습니다.
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
using namespace std;
int main() {
int len;
cout << "문자열의 길이를 입력하세요" << endl;
cin >> len;
char* ptr = new char[len];
cout << "문자열을 입력하세요" << endl;
cin >> ptr;
cout << "당신이 입력한 문자열은 \"" << ptr << "\" 입니다" << endl;
delete []ptr;
return 0;
}
문자열의 길이를 입력하세요 20 문자열을 입력하세요 안녕하세요 당신이 입력한 문자열은 "안녕하세요" 입니다 |
참조자로 힙 영역 접근하기
참조자를 이용하면 동적할당한 힙 영역에 접근할 수 있습니다. 참조자를 이용하면 좀 더 간결한 형태로 작성할 수 있고 값을 변경할 수도 있습니다.
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
using namespace std;
int main() {
int* ptr = new int;
int& ref = *ptr;
ref = 10;
cout << *ptr;
delete ptr;
return 0;
}
C++에서 C 표준함수 호출하기
C++에서도 C에서 쓰던 string.h, math.h 등의 헤더를 사용할 수 있습니다. 하지만 C++을 위해 개정해 놓은 헤더가 있으니 가급적 C++헤더를 사용하는 게 좋습니다. 왜냐하면 C++ 헤더는 C에서는 안되는 함수 오버로딩 등을 사용하여 C++문법을 기반으로 개선되어 있기 때문입니다. C의 헤더에서 ". h"를 지우고 앞에 "c"를 붙이면 C++헤더가 됩니다. 예를 들면 <string.h>는 <cstring>으로 대체할 수 있습니다.
'C & C++ > 윤성우의 열혈 C++ 프로그래밍' 카테고리의 다른 글
[열혈 C++] C++에서의 파일 분할 (0) | 2024.02.04 |
---|---|
[열혈 C++] 구조체와 클래스 (0) | 2024.02.04 |
[열혈 C++] const의 의미와 참조자 (0) | 2023.12.19 |
[열혈 C++] OOP 단계별 프로젝트 01단계 (0) | 2023.12.14 |
[열혈 C++] 인라인 함수와 네임 스페이스 (0) | 2023.12.14 |