LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 836|回复: 3

动态分配二维数组的问题

[复制链接]
发表于 2006-4-29 21:38:08 | 显示全部楼层 |阅读模式
我想动态分配一个二维数组,可总会出现如下错误

xl@xl:~$ cat test.c
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
int main()
{
        char **s;
        int i;
        s = (char**)malloc(12);
        for(i=0; i<12; i++){
                s = (char *)malloc(16);
                strcpy(s,"abcdefghijklmno");
        }

        for(i=0; i<12; i++){
                printf("\ts[%d] = %s\n",i,s);
        }
        return 1;
}
xl@xl:~$ gcc -g test.c -o test
xl@xl:~$ ./test
        s[0] =                      xijklmno
        s[1] =        ijklmno
        s[2] = abcdefghijklmno
        s[3] = abcdefghijklmno
        s[4] = abcdefghijklmno
        s[5] = abcdefghijklmno
        s[6] = abcdefghijklmno
        s[7] = abcdefghijklmno
        s[8] = abcdefghijklmno
        s[9] = abcdefghijklmno
        s[10] = abcdefghijklmno
        s[11] = abcdefghijklmno
xl@xl:~$
数组前两个元素的值会改变,请问这是怎么回事
如何让元素值稳定不变
发表于 2006-4-29 22:35:49 | 显示全部楼层
man malloc
返回12个指针空间应该是这样:
s = (char**)malloc(sizeof(char**)*12)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-30 02:13:20 | 显示全部楼层
Post by 自然平衡
man malloc
返回12个指针空间应该是这样:
s = (char**)malloc(sizeof(char**)*12)

感谢.....
回复 支持 反对

使用道具 举报

发表于 2006-4-30 20:53:29 | 显示全部楼层
Post by 自然平衡
man malloc
返回12个指针空间应该是这样:
s = (char**)malloc(sizeof(char**)*12)




s = (char**)malloc(sizeof(char*)*12)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表