#include
#include
#include
int main(void)
{
char* const pszData = (char*)malloc(sizeof(char) * 32);
char testText[4] = { "abc" };
memcpy(pszData, testText, sizeof(testText));
puts(pszData);
free(pszData);
return 0;
}
ㅠㅠ c언어 공부중인데 이거 때매 시간 많이 날리네요
#include
#include
#include
int main(void)
{
char* const pszData = (char*)malloc(sizeof(char) * 32);
if (pszData == NULL)
{
printf("pszData==NULL ");
return -1;
}
char testText[4] = { "abc" };
if (sizeof(testText) > _msize(pszData))
{
return 0;
}
else
{
memcpy(pszData, testText, sizeof(testText));
puts(pszData);
}
free(pszData);
return 0;
}
malloc 사용법 다시 공부좀
모르겠습니다..
모르면 다시 공부하러 가십시오
선생님 솔직히 말하자면 이거만 5시간 잡아 먹었습니다..
이해는 됐는데요 malloc함수가 실패할 이유가 뭐뭐가 있나요 heap영역이 부족해서 에러나면 NULL 반환 하나요?
그럴수도 있고요
void *malloc(size_t size);
인자 size 할당받을 메모리의 바이트 크기
반환값 힙 영역에 할당된 메모리 덩어리 중 첫번째 바이트 주소 에러가 발생하면 NULL 반환
pazData 가 NULL일 수도 있어서 예외처리를 해주라는 뜻같은데
if문으로 하니까 해결됐는데 저렇게 해도 되는건가요
NULL이 별다른게 아니라 0이고 malloc이 실패하면 NULL을 리턴하니 pszData를 쓰기 전에 NULL 체크 하란 얘깁니다
위에 const 는 없애는게 좋고, NUUL 이라는게 사실 0 이고, 그리고 위 예제 malloc 는 메모리 할당하는 사이즈가 적은 편이기 때문에 NULL 체크 안 하셔도 됩니다. 만약 메모리 할당... 1GB 뭐.. 이렇게 할당하는 경우라면 NULL 체크해주는게 좋죠. 그리고 스트링 복사는 strdup 로 복사하는게 좋죠.
감사합니다