Если вы не хотите ждать завершения кода C, прежде чем делать следующий вызов, вы не можете использовать одну и ту же ячейку памяти снова и снова. Вместо этого создайте массив и затем передайте эти местоположения. Для этого кода я предполагаю, что число циклов for будет равно n. Это не должно быть известно, пока не настанет время для цикла for.
int* values = new int[n];
for(int i=0;i<n;i++) {
values[i] = <somevalue>;
submitTask((void*)&values[i]);
}
В какой-то момент, когда вы уверены, что все сделано, позвоните
delete[] values;
Или, вместо этого, вместо массива целых, создайте массив демонстрационных объектов.
Demo demo[] = new Demo[n];
for(int i=0;i<n;i++) {
demo[i].setConstant(<somevalue>);
demo[i].submitTask();
}
Но первое имеет для меня больше смысла, поскольку демо-объект, похоже, не делает ничего стоящего. Но, возможно, вы не указали методы и элементы, не относящиеся к данному вопросу, чтобы можно было выбрать, какой вариант лучше. Несмотря на это, дело в том, что вам нужны отдельные области памяти для отдельных значений, если вы не знаете, когда они будут использоваться, и не хотите ждать.