
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;} 总结 以上是内存溢出为你收集整理的通用二维数组全部内容,希望文章能够帮你解决通用二维数组所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)