생활
malloc 사이즈에 관해서 궁금해요
malloc을 사용할 때 void*malloc(size)이런 식으로 하던데,
저 뒤 사이즈가 어떤게 들어가야할지 감이 잘 안잡힙니다...
감 좀 잡게 도와주시면 매우 감사합니다 ㅠㅠ
55글자 더 채워주세요.
2개의 답변이 있어요!
malloc 함수는 memory block을 size byte 만큼 할당하는 기능을 제공하며, memory block의 첫주소를 void* 타입으로 리턴합니다. 또한 할당된 영약은 초기화 되어 있지 않습니다.
#include <iostream> #include <cstdlib> using namespace std; int main() { int *ptr; ptr = (int*) malloc(5*sizeof(int)); cout << "Initializing values" << endl << endl; for (int i=0; i<5; i++) { ptr[i] = i*2+1; } cout << "Initialized values" << endl; for (int i=0; i<5; i++) { cout << *(ptr+i) << endl; } free(ptr); return 0; }byte크기 기준으로 크기가 들어갑니다.
예로 float형 10개의 array면 sizeof(float) * 10 이고 sizeof(float) 은 4 byte이기 때문에 4 값, 그래서 최종적으로 malloc(40) 값이 들어가게 됩니다.
또 다른 예로 int형 20개의 array 면 sizeof(int) * 20 이고 sizeof(int)는 4byte이기 때문에 4 값, 그래서 최종적으로malloc(80) 값이 들어가게 됩니다.
double 형 20개 array형 sizeof(double)은 8 byte라 8값이 들어가고 최종적으로 malloc(160)의 값이 들어가게 됩니다.