动态二维数组以及char 跟 int 效率
动态二维数组以及char 和 int 效率
程序关闭时会弹出一个错误对话框内容大概如下
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; //动态创建二维数组 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; }
------解决方案--------------------