“char *p = 0, *rp = 0, *tmp = "adgadasdfasfasdfas";
int len;
p = tmp;
len = strlen(p);
if (len > 10) {
printf("original lenth:[%d]\n", len);
strncpy(rp, p, 10);
len = 10;
} else {
rp = p;
}
printf("p=[%s] len=[%d]\n", rp, len);
为什么strncpy(rp, p, 10);此处出现core?
你执行这个操作的时候rp执行的内存是0,没有分配啊,当然无法使用这块内存。
你定义成 char rp[100];就不会有问题了。”
请问为什么使用char rp[100]就不用内存分配的问题了?难道说char数组自动分配空间?谢谢!
"我上面说错了,指针声明时如果不初始化,都是指向同一个内存:
0xCCCCCCCC(十六进制)
而这块内存在系统中是不可写的(就是不能为其赋值)"
这里指的指针初始化应该有两个方式:
1、使用malloc函数分配空间
2、使用t = tmp;让t指向tmp指向的空间
理解对么?