본문 바로가기

ECIM list (Help!)

c언어 메모리동적할당 문제 Memory Allocation Malloc

출력값 알아내는게 문제인데요

출력값 첫번째는 30이고 두번째는 a부터 i까지 출력돼야 되는거 아닌가요?

두번째는 쓰레기값도 아니고 뭔 이상한 한자같은게 나오는데 원래 이렇게 나오는게 맞나요?



 

 Debug : For 문에 불필요한 세미 콜론이 있어서 오류입니다.   

 

○ 질문하신 코드의 For Loop에 잘못된 세미 콜론이 있습니다. 이 때문에 For 문이 진행이 안되었습니다. 



 

 코드 개선  

 

○ 물론, 예제 코드라서 그랬겠지만, 코드에 잘못된 부분이 많습니다. 

○ Malloc() 을 쓸 때는 Sizeof() 와 함께 써야 시스템이 바뀌어도 오류없이 동작합니다. 원래 코드는 위험합니다. 

○ Malloc() 후에는 메모리를 리셋해 주는 것이 좋습니다. (이 부분은 생략)

○ 문자열을 다룰 때는 마지막에 Null 문자를 넣어 주어야, 출력할 때 쓰레기 값이 보이지 않게 됩니다. 



   예제 코드
 

#include 
#include 

int main()
{
	int i = 0;
	int* pTmp = (int*)malloc(sizeof(int) * 10);
	char* pCh = (char*)malloc(20);

	pTmp[0] = 10;
	pTmp[1] = 20;

	printf("Sum : %d\n", pTmp[0] + pTmp[1]);

	for (i; i < 10; i++)
	{
		pCh[i] = 0x61 + i;
	}

	pCh[i] = '\0'; //Null char at the End of string

	printf("%s \n", pCh);

	free(pTmp);
	free(pCh);

	return 0;
}

 

 실행 결과