gpt4 book ai didi

C - 释放指向指针的指针

转载 作者:太空狗 更新时间:2023-10-29 15:36:32 26 4
gpt4 key购买 nike

<分区>

在我的代码中,我分配了一些我需要释放的二维数组。然而,每当我认为我已经掌握了指针的概念时,它们总是让我感到惊讶,因为它们没有按照我的期望去做;)

那么谁能告诉我如何处理这种情况?:

这就是我为指针分配内存的方式:

typedef struct HRTF_ {
kiss_fft_cpx freqDataL[NFREQ]
kiss_fft_cpx freqDataR[NFREQ]
int nrSamples;
char* fname;
} HRTF;

HRTF **_pHRTFs = NUL;
int _nHRTFs = 512;

_pHRTFs = (HRTF**) malloc( sizeof(HRTF*) *_nHRTFs );

int i = _nHRTFs;
while( i > 0 )
_pHRTFs[--i] = (HRTF*) malloc( sizeof( HRTF ) );

// Load data into HRTF struct

下面是我认为应该如何释放已用内存:

if( _pHRTFs != NULL )
{
__DEBUG( "Free mem used for HRTFs" );
for( i = 0; i < _nHRTFs; ++i )
{
if( _pHRTFs[i] != NULL )
{
char buf[64];
sprintf( buf, "Freeing mem for HRTF #%d", i );
__DEBUG( buf );
free( _pHRTFs[i] );
}
}
__DEBUG( "Free array containing HRTFs" );
free( _pHRTFs );
}

释放个体 _pHRTFs[i] 的作品,打印最后一个 __DEBUG 语句,但最后一个 free( _pHRTFs ) 给出我是一个段错误。为什么?

没关系 - 在最后一个 free( _pHRTFs ) 之后添加调试语句表明这段代码实际上是有效的,我的问题出在其他地方。谢谢你时间!

乔纳斯

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com