ECIM list (Help!)
c언어 메모리동적할당 문제 Memory Allocation Malloc
지그프리드
2015. 9. 4. 06:54
출력값 알아내는게 문제인데요
출력값 첫번째는 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; }
실행 결과 |