今天写程序时发现一个新的错误:Stack smashing detected,这个错误以前没有遇到,所以先上网查了一下,并记录下来解决这个问题的过程。
首先这个程序的源代码如下,这个程序是用来求解1000以内的素数。
#include<stdio.h>
#define TRUE '1'
#define FALSE '0'
int main(int argc, char const *argv[]) {
char num[1000];
int index = 0;
char *pstr = NULL;
for(; index <= 1000; index++ )
{
num[index] = TRUE;
}
pstr = num;
for( index = 2; index <= 1000; index++ )
{
if ( num[index] == TRUE ) {
int temp = index+1;
for( ; temp <= 1000; temp++ )
{
if( num[temp] == TRUE && temp % index == 0 )
{
num[temp] = FALSE;
}
}
}
}
for( index = 2; index <= 1000; index++)
{
if( num[index] == TRUE )
{
printf("%d\n", index );
}
}
return 0;
}
<