Здесь какой-то неправильный код
for(int i = 0; i < 336000; i++){
for(int j = 0; j < 18; j++){
int N = 18;
// allocate memory for 18 objects in a continous block
packets = new PacketInfo[N];
// create the packetInfo objects
packets[i] = PacketInfo(i, i);
Если i
больше 18 (что, очевидно, будет), то packets[i]
будет доступом к массиву вне границ.
Альтернатива с packets[j]
не имеет особого смысла, так как распределение размещено неправильно относительно l oop (предположительно, оно должно быть перед l oop).
Плюс ваше утверждение about vector неверно.
vector<PacketInfo> packets(18);
выделит вектор размером 18 с 18 непрерывными элементами, и, поскольку вектор не растет, перераспределение также отсутствует.
Просматривая ваши комментарии в code Я думаю, что вы хотели написать код
for(int i = 0; i < 336000; i++){
int N = 18;
// allocate memory for 18 objects in a continous block
vector<PacketInfo> packets(N);
for(int j = 0; j < N; j++){
// create the packetInfo objects
packets[i] = PacketInfo(i, i);
}
}