malloc 함수를 사용하여 x_space에 대한 메모리를 성공적으로 할당했습니다. 그러나 값을 할당하는 동안 실패했습니다. 주목 해 주셔서 감사합니다.malloc 성공했지만 할당 실패
다음은 Liblinear (open source svm tool)의 train.c입니다.
#include<stdio.h>
#include<stdlib.h>
struct feature_node
{
int index;
double value;
};
void main()
{
struct feature_node * x_space;
long j;
x_space =(struct feature_node *)malloc(306396532*sizeof(struct feature_node));
if(x_space)
{
for(j=0;j<306396532;j++)
x_space[j].index=0; /* fail when j=37961212, ACCESS VIOLATION */
}
else
printf("malloc failed.\n");
puts("End");
getchar();
}
힌트 :'306396500 * sizeof (double)'이 (으)로 평가되는 것은 무엇입니까? 그리고 int 형은 얼마나 큰가? – Mysticial
'malloc'이 어떻게 성공했는지 어떻게 알았습니까? 당신은'malloc'의 리턴 값을 확인하지 않았습니다 –
@YuHao 실패한 경우, 첫 번째 반복에서 충돌했을 가능성이 있습니다. – Mysticial