// 소스
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char* test_str = (char*)malloc(sizeof(char)*100); /// heap 에 만듬
test_str = 0;
for (int i=0; i < 100; i++) printf(test_str[i]);
}
// 결과
Process returned -107341819 (0x00000005) // 런타임 에러
// 소스
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char* test_str = (char*)malloc(sizeof(char)*100); /// heap 에 만듬
strcpy(test_str, "");
for (int i=0; i < 100; i++) printf(test_str[i]);
}
// 결과
00-11502420-115000000000000000000000000000000000000000000
// memcpy 같은 함수 인자로 못주고, strncpy 함수 두번째 인자로 못줄정도로 안전성이 떨어짐
// 소스
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char* test_str = (char*)malloc(sizeof(char)*100); /// heap 에 만듬
strcpy(test_str, "");
for (int i=0; i < 100; i++) printf(test_str[i]);
}
// 결과
00-11102420-00....
// 위와 비슷한 결과
안해봐도 뻔한걸 왜 햇을까..
빡대가리라는 소리가 억울하였는듯..
밍고스 말대로면 *test_str=0로 초기화해야하지 않음?
아 그렇군요. 그렇게 해도 결과는 두번째 세번째랑 같을겁니다
스택은 초기화 안되는게 정상이야. 초기화 해주는게 특별한 옵션임.
스님 말투가 원래 저러니 신경쓰진마. ㅋㅋ 스님이 나이치곤 실력있는것도 사실임.
글구 니가 올린코드 전부 그냥 포인터 개념없는 상태로 작성된 코드야.
아래의 링키드 리스트 유사한 패턴 코드랑 상관없는 코드.
printf 에 넘겨줘야 할 것은 포인터 여야 하는데 char 를 던져주고 있는것만 봐도 이 코드들은 개그지.
말투가 저러니 신경쓰지마? 당신은 욕먹으면 말투원래 저러니 그냥 용서가 됨?
printf("%d", test_str[i]) 인데 복붙아니라 옮겨적느라 실수로 빼먹었슴
나이에 비해 실력이 있으면 말투가 어때도 상관이 없다니.. 당신 인성도 좀 이해가 안됨
printf 를 어떻게 사용하던 그게 무슨상관? 당신 경력진짜 당신이 전에 말했던것이랑 맞음?
codesafer 란 사람한테 많은 실망감을 받는군