当我运行这个我在printf上得到segv,我做错了什么?分配字符数组和打印第一个条目
int main() {
char **bla;
int size =10;
int i;
bla = calloc(size*size,sizeof(char *));
for(i=0;i<size;i++) {
*bla = calloc(10,sizeof(char));
strncpy(*bla,"aaaaa",size);
bla++;
}
printf("%s\n",bla[0]);
}
我知道我能做到这一点与
int main() {
char **bla;
int size =10;
int i;
bla = calloc(size*size,sizeof(char *));
for(i=0;i<size;i++) {
bla[i] = calloc(10,sizeof(char));
strncpy(bla[i],"aaaaa",size);
}
printf("%s\n",bla[0]);
}
,但有什么办法用指针来做到这一点?
我第二次建议使用第二个指针遍历数组。如果你忘记了'alloc'返回的值,那么你以后将无法'释放'内存。为获得最佳效果,请复制并不要触摸原始指针。 – bta 2010-07-12 19:47:33
-1'*(bla + i)'只是'bla [i]',这正是OP要求避免的...... – 2010-07-12 19:58:10
@Chris:我怀疑不是。这可能是指针的作业分配。 – SLaks 2010-07-12 20:06:59