c - 二维数组的动态 malloc

标签 c arrays dynamic

我为矩阵分配了内存块。比起循环我还记得台词。
我得到未处理的异常:访问冲突写入位置 0x00557148 在_tmain 循环中进行。 我做错了什么?

double **d; 

#define COUNT 10 

int create()
{
    d = (double**) malloc(COUNT * sizeof(double*));
    if (!d)
        return 0; 
    int size = COUNT * sizeof(double); 
    double *_new =  (double*) malloc(COUNT * size);

    if (!_new)
        return 0; 
    for (int i = 0; i < COUNT; i++) {
        d[i] = _new;
        _new += size; 
    }

    return 1; 
}

int _tmain(int argc, _TCHAR* argv[])
{
    double *_d; 
    if (create()) {
        for(int i = 0; i < COUNT; i++) {
            _d = d[i]; 
            for (int j = 0; j < COUNT; j++)
                _d[j] = 5; 
        }
    } else
        return -1;

    return 0;
}

最佳答案

我很确定您需要将 _new += size 更改为 _new += COUNT

关于c - 二维数组的动态 malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17763550/

相关文章:

c# - 如何通过上下文菜单控制动态生成的控件的可见性?

c - 如何将多个结构实例存储在共享内存中?

javascript替换

java - 在将重复项添加到数组之前识别重复项

ios - 如何用来自 firebase 的数据(字符串)填充数组

scala - 以编程方式向 Spark session 添加/删除执行程序

c - 打印通过指针 C 发送的字符串

c - 如何从 native C DLL 显示简单的非模式窗口

c++ - 奇怪的文本模式文件输出行为

c - 我的简单程序中的 "value is neither array nor pointer nor vector"