моя программа выдает std :: bad_alloc. После отладки я обнаружил, что он добавлен в код
curFinalBucket->points.push_back(p);
где баллы это vector<PPointT>
. Перед строкой кода curFinalBucket
инициализируется следующим образом.
PFinalBucket curFinalBucket;
curFinalBucket = (FinalBucket*)malloc(sizeof(FinalBucket));
Странно то, что, если я просто введу приведенный выше код в main
, не исключение. Но когда я говорю это следующим образом,
void mergeBucket(map<BucketT, vector<PPointT>, Comp> *pMap, IntT numFinalBuckets)
{
...
PFinalBucket curFinalBucket;
curFinalBucket = (FinalBucket*)malloc(sizeof(FinalBucket));
curFinalBucket->points.push_back(p);
}
int testLoadBalancedLSH(IntT num_fbuckets, RealT avgNumPossessedTerms, IntT np, IntT d, char* dataFile)
{
...
mergeBucket(&mapstore, num_fbuckets);
}
int main(int nargs, char **args) {
...
testLoadBalancedLSH(atoi(args[1]), 0.01 * atoi(args[2]), atoi(args[2]), atoi(args[3]), args[4]);
}
это вызовет исключение. Есть идеи, о чем это может быть? заранее спасибо.