通用二维数组

通用二维数组,第1张

概述我想像这样创建一个二维数组: void **mdeclaraMatrice(int nrLini,int nrColoane, int sizeOfElement){ int i; void **m = malloc(nrLini * 4); if(m==NULL) return NULL; for(i=0; i<nrLini; i++) 我想像这样创建一个二维数组:
voID **mdeclaraMatrice(int nrlini,int nrColoane,int sizeOfElement){    int i;    voID **m = malloc(nrlini * 4);    if(m==NulL)        return NulL;    for(i=0; i<nrlini; i++)    {        *(m + (i*4)) = malloc(nrColoane * sizeOfElement);        if(*(m + (i*4)) == NulL)             return NulL;    }    return m;}

我想这样用它:

int **m = (int **)mdeclaraMatrice(n,m,sizeof(int));

但它不起作用.我做错了什么?

解决方法 您应该使用m [i]而不是*(m i * 4)并让编译器执行算术运算.

此外,如果发生故障,您应该释放已分配的内存.

试试这个:

voID **mdeclaraMatrice(int nrlini,int sizeOfElement){    int i;    voID **m = malloc(nrlini * sizeof(voID*));    if (m == NulL)        return NulL;    for (i=0; i<nrlini; i++)    {        m[i] = malloc(nrColoane * sizeOfElement);        if (m[i] == NulL)        {             while (i-- > 0)                 free(m[i]);             free(m);             return NulL;        }    }    return m;}
总结

以上是内存溢出为你收集整理的通用二维数组全部内容,希望文章能够帮你解决通用二维数组所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1243256.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存