У меня есть две проблемы, которые, я считаю, связаны. Я пытаюсь создать динамический массив переменных, а затем получить доступ к различным конкретным членам массива. Сегмент кода, вызывающий проблемы:
double *F_inertia, *F_drag, *F_KN;
i = 0;
F_inertia = new double[i];
F_drag = new double[i];
F_KN = new double[i];
t = 0;
x = 0;
for (z = 0; z >= -d; z = z-8) {
F_drag[i] = ((0.5 * rho * Cd * Diam * ux * fabs(ux)));
F_inertia[i] = (rho * Cm * Vol * ax);
F_KN[i] = (F_drag[i] + F_inertia[i])/1000;
cout << i << "\t" << F_KN[i]<< endl;
i++;
}
cout << F_KN[1] << endl;
delete[] F_inertia;
delete[] F_drag;
delete[] F_KN;
Строка cout << i << "\t" << F_KN[i]<< endl;
выводит значения правильно, и все значения правильно записываются в файл (ранее в коде). Однако когда я использую строку cout << F_KN[9] << endl;
в качестве теста, чтобы убедиться, что эта позиция содержит правильное значение, она выводит 0, что не совпадает со значением i = 1tst позиция в цикле for. Примечание: значения для F_KN[5]-F_KN[8]
делать печатаются правильно! Только не любой из нижних должностей! Я очень смущен этим!!
Во-вторых, после того, как код скомпилируется и запустится, после предоставления мне правильных значений (кроме первой проблемы) появляется следующее:
*** glibc detected *** ./monopile_deflection: free(): invalid next size (fast): 0x0000000001365260 ***
monopile_deflection: malloc.c:2451: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.
Aborted (core dumped)
Из чтения я знаю, что это связано с неправильным выделением массива или попыткой доступа к несуществующему значению массива, но я не вижу, в чем проблема?
Заранее спасибо за любую помощь или совет!
F_inertia = new double[i];
сi = 0;
чувствует себя странно. см. stackoverflow.com/questions/ 1087042/ - person Ferenc Deak   schedule 16.10.2014