【发布时间】:2013-08-18 12:27:35
【问题描述】:
以下代码在运行时在第 L2 行引发访问冲突,这发生在第二次调用 setword 期间。
Q>我在L2哪里出错了,为什么L1行的第一个memset没有问题?
注意:我试图将问题区域与更大的代码隔离开来,希望这能提供足够的信息。
void setword( char ** word )
{
if ( *word == NULL )
{
*word = (char *)malloc(30);
memset( *word, '\0', 30 ); //L1: OK
}
else
{
memset( *word, '\0', 30 );//L2: Access violation
}
*word = "Hello";
//*word shall be freed when operations are complete.
}
int main()
{
char * word = NULL;
setword( &word ); //Call 1: OK
printf( "%s\n", word );
setword( &word ); //Call 2: NOK!
printf( "%s\n", word );
}
【问题讨论】:
标签: c access-violation