Я обычно работаю в Objective-C, но теперь я пытаюсь интегрировать некоторый код C, который я тоже не знаю.Динамическое распределение переменных в C
Начнут с моим объектом буфера:
@interface Buffer : NSObject {
int* buffer_;
int numFrames_;
int idNumber_;
}
@property (nonatomic) int* buffer;
@property (nonatomic) int numFrames;
@property (nonatomic) int idNumber;
В другом классе я пытаюсь динамически создавать массивы гр и наклеить их в буфер моих объектов буфера. Следует отметить, что я не знаю, сколько буферов мне понадобится заранее.
for (i=0; i<[arrayOfFlags count]; i++) {
NSNumber *flagObject = (NSNumber*)[arrayOfFlags objectAtIndex:i];
int flagInt = [flagObject integerValue];
Buffer *snippetBuffer = [[Buffer alloc] init];
int returnArray[44000];
snippetBuffer.buffer = returnArray;
snippetBuffer.numFrames = 44000;
snippetBuffer.idNumber = i;
int k;
// NSLog(@"creating snippet buffer at flag %d", flagInt);
for (k = 0; k < 44000; k++) {
snippetBuffer.buffer[k] = // insert some values here.
}
}
Когда я запускаю этот код, все объекты буфера имеют те же данные, что и последний. Я думаю, что происходит то, что returnArray перезаписывается на каждой итерации.
Как я могу гарантировать, что новая память выделяется каждый раз, когда я создаю массив c в цикле? (Если это действительно моя проблема).
Надеюсь, что этот вопрос был не слишком сложным. Пожалуйста, не стесняйтесь задавать вопросы.