小编Gok*_*m P的帖子

strcpy()/ uninitialized char指针这个代码背后的诀窍是什么?

#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),也清除错误.

c pointers memory-management strncpy

1
推荐指数
1
解决办法
1280
查看次数

标签 统计

c ×1

memory-management ×1

pointers ×1

strncpy ×1