#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main ()
{
char *imsi;
unsigned int i;
int val;
char *dest;
imsi = "405750111";
strncpy(dest,imsi,5);
printf("%s",dest);
/* i = 10; */
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,i = 10赋值如上所述,代码工作正常,没有错误.当包含赋值用于编译时,错误(分段错误)发生在strncpy(dest,imsi,5); .
通过避免对变量i的优化(即,volatile int i;),即使包括赋值(i = 10),也清除错误.