首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

动态二维数组以及char 跟 int 效率

2012-09-24 
动态二维数组以及char 和 int 效率C/C++ codechar g_grid, g_high, g_widechar i, j//动态创建二维数组g

动态二维数组以及char 和 int 效率

C/C++ code
char g_grid, g_high, g_wide;char i, j;//动态创建二维数组g_grid = (char**)malloc(g_high * sizeof (char));for (i=0; i<g_high; ++i){    g_grid[i] = (char*)malloc(g_wide * sizeof (char));                    for (j=0; j<g_wide; ++j)    {        g_grid[i][j] = 115;    }}//释放部分for (i=0; i<g_high; ++i){    free(g_grid[i]);}free(g_grid);



程序关闭时会弹出一个错误对话框内容大概如下
Debug Assertion Failed!

Expression: CrtIsValidHeapPointer(pUserData)
……

屏蔽释放部分则程序正常。不屏蔽也正常,就是在程序关闭时就会弹出这个对话框。求解...


第二个问题:
如果不考了占用空间, char 和 int 运行效率哪个高?
这个程序 char完全够用了,但是都是数字运算,用不用换成int?

在效率上char 进行加减乘除 会被自动转换int处理么, 或者比处理int类型多一步?

[解决办法]
不考虑高速缓存的因素,int效率应该更高,因为内存io是对齐的,不过大多数程序不会有明显差别
[解决办法]
g_grid = (char**)malloc(g_high * sizeof (char*));
C/C++ code
char **g_grid, g_high, g_wide;char i, j;int main(){    g_high = 9;    g_wide = 9;     //动态创建二维数组    g_grid = (char**)malloc(g_high * sizeof (char*));    for (i=0; i<g_high; ++i)    {        g_grid[i] = (char*)malloc(g_wide * sizeof (char));                for (j=0; j<g_wide; ++j)        {            g_grid[i][j] = 115;        }    }        //释放部分    for (i=0; i<g_high; ++i)    {        free(g_grid[i]);    }    free(g_grid);    return 0;}
[解决办法]
探讨
引用:

不考虑高速缓存的因素,int效率应该更高,因为内存io是对齐的,不过大多数程序不会有明显差别


哦 我这程序基本上是围绕者g_grid 这个数组做处理,也就是整个程序一直在运算g_grid。

是用int 好还是char 比较好呢.

热点排行