c로 짜는데
pptr = (char**)malloc(1000);
for( i; 1000;)
pptr[i] = (char*)malloc(sizeof(buffer));
대충 이런 코드인데
항상 639번째에서인가 할당 실패하네
어떻게 해결해야할까..
pptr = (char**)malloc(1000);
for( i; 1000;)
pptr[i] = (char*)malloc(sizeof(buffer));
대충 이런 코드인데
항상 639번째에서인가 할당 실패하네
어떻게 해결해야할까..
메모리를 늘립니다
어떻게 늘리나요? vs2008 씁니다..
씨발 나도 비슷한 문제로 고민중인데 프갤럼들 맨날 메모리를 늘리라고만 대답해줌 ㅡㅡ
그래서 이번에 노트북 새로 삼 ㅎㅎ 님도 새로 사세요
근데 진짜 해결방법 아는사람 없나;
저번에 갤에 어디 댓글 보니까 자동으로 늘려준다더만
buffer 크기가 몇인데?
char buffer[20]임. 항상 뻑나는 위치가 가변적인것도 아니고 딱 638번째에서 뻑나고 -_- 컴 램은 2기가인데..
메모리를 늘리란게 물리적인 램을 늘리란 얘기는 아니겠지 -_-;
그럼 할당된 주소라도 눈으로 체크해보는 수밖에
malloc(1000) 하면 몇바이트 할당하냐? ㅋㅋ
포인터는 몇바이트냐?
물리적 램 맞음.
1000번 돌으려면 포인터 배열이 몇이여야 하냐?
성대아싸//포인트 크기는 운영체제 bit수를 따름
컴파일러는 니 생각해서 좀더 크게 블록 잡아줬나?
그런데 못쓸 크기는 어닌데?
잘 되는데 왜? 저 코드만 보면 문제 없는데? 다른데서 오버플로 난거 아님?
malloc(1000)하면 char** 포인터 배열 1000개가 생기는게 아니였나? 요새 기본적인게 뭐이리 헷갈리지
char**은 리턴형이고
아니 그냥 1000바이트짜리 메모리 공간이 할당 되고 그걸 (char**)로 명시적 캐스팅한거지
fgets(buffer, 20, fp); 한다음에 buffer를 배열에 strcpy로 넣는데 왜 자꾸 항상 같은 인덱스에서 뻑나는지 그걸 모르겠네
앜 그게 문제였군
리턴형은 뭐야 ㅡㅡ
아 맞다 =_=... 성대아싸횽 고마워
저 정도에서 뻑날리가 없을 것 같은데. malloc 자체가 함수 호출 되었을 때 메모리가 할당되는게 아니고, 거기에 데이터가 쓰이는 시점에서 할당이 되는 거라고 알고 있어. 일단 malloc 호출만이라면 물리적 램을 초과한 수치도 호출이 가능하다.
내가 니컴 컴파일러였으면 니가 250번째 돌았을때 뻑냈을껴
이렇게 하셈 malloc(1000 * sizeof(char*));
해결! 성대아싸횽 ㅇㅇ횽 ?횽 생물학횽 다들 고마워!
어.. 으어.. 나도 어떻게 해결좀 해줘 히..히히.. 텍스쳐 생성이 안되요
일단 시험부터 봐야겠다..
난 아무것도 한게 없는데
숫자를 앞에 , 원소 사이즈를 뒤에다 놓는게 좋은게 calloc 함수의 경우는 num 이 1번 파라미터, size 가 2번 파라미터
calloc(1000 , sizeof(char*)); malloc(1000 * sizeof(char*)); // 이러면 코드 좀만 고쳐도 됨
C++만 쓰다보니 malloc 사이즈 잊고있었넼ㅋㅋ 나도 공부 다시 해야긋다.
그렇구나 많이 배우고 갑니다