【发布时间】:2017-08-16 14:21:52
【问题描述】:
我在这里找到了一个用 C 语言实现的字符串缓冲区 (https://sites.google.com/site/rickcreamer/Home/cc/c-implementation-of-stringbuffer-functionality)。有一个名为 dispose() 的函数,其中一个参数是指针的地址:
void dispose( SB **sb, int freeStrings ) {
if ( !sb || !*sb || !(*sb)->ptrList )
return; /* TODO: Decide if should abort here or take other action */
if ( freeStrings ) {
for ( int i = 0; i < (*sb)->count; ++i )
free( (*sb)->ptrList[ i ] );
}
free( (*sb)->ptrList );
free( *sb );
*sb = 0; /* Set value of pointer to zero */
}
我不明白为什么它的第一个参数是指针的地址,而不是指针。我将函数转换为:
void dispose( SB *sb, int freeStrings ) {
if ( !sb || !sb->ptrList )
return; /* TODO: Decide if should abort here or take other action */
if ( freeStrings ) {
for ( int i = 0; i < sb->count; ++i )
free( sb->ptrList[ i ] );
}
free( sb->ptrList );
free( sb );
sb = 0; /* Set value of pointer to zero */
}
我错过了什么吗?
【问题讨论】:
-
查看原始代码的最后一行
*sb = 0; /* Set value of pointer to zero */将地址传递给函数的指针设置为 NULL。告诉你什么?