EDIT: C++ биты удалены, чтобы избежать путаницыTrouble литье 1D массив в 2D массив
У меня есть массив данных, например, так
int numSamples = 16;
float *lData = (float*)calloc(numSamples, sizeof(float));
... и я хотел бы передать эти данные в функции с таким определением. , ,
void processSampleBlock (const float ** inputChannelData,
int numInputChannels,
...)
Как вы можете видеть, эта функция принимает 2D-массив, который может иметь несколько каналов. Мои данные - это всего лишь один канал (1D), но я могу получить код для компиляции, выполнив такой бросок. ,
processSampleBlock ((const float**)(lData),
1,
...)
Тем не менее, во время выполнения я получаю сообщение о плохом доступе, тогда код внутри функционального блока пытается разыменовать данные внутри функции. ,
for (int nn=0; nn< numSamples; ++nn)
{
float x = inputChannelData[0][nn]; //--> Computer says no
}
Я бесполезен для многомерных массивов в стиле C и, вероятно, делаю здесь фундаментальную ошибку. Любая помощь будет замечательной! Благодаря
'повышение :: scoped_array' - Почему это помечено C? –
Pubby
Извините, моя проблема была в бит стиля C :) – learnvst
Почему массив указателей на строки просто не содержит одного указателя на одну строку? – learnvst