zoukankan      html  css  js  c++  java
  • 二维数组申请问题

    最近一个二组数组申请的BUG调了一天半,记录下来。

    问题描述:首先是在CPU端申请内存,然后在GPU端申请内存。当处理小图时不报错,当图的规模超过一定值时,GPU端申请内存报错为:内存超界。

    问题原因:内存申请的问题,麻烦在于当时不会报错,再次运行不下去了,才会报错,导致报错的位置不准确。在二维数组申请时,一定要注意第一维和第二维申请时的差别。

    问题改正:

    原代码:

    HGLOBAL::gpu_def[i].nodes_link=(int **)malloc((HGLOBAL::gpu_def[i].nodes_count_class1 + 1) * sizeof(int));
    for( j = 0; j <= HGLOBAL::gpu_def[i].nodes_count_class1; j++)
    {
    printf("j = %d ",j);
    HGLOBAL::gpu_def[i].nodes_link[j] = (int *)malloc((HGLOBAL::total_nodes_count + 2)* sizeof(int)); //XXXXXXXXXXXXXXXX
    memset(HGLOBAL::gpu_def[i].nodes_link[j],0,(HGLOBAL::total_nodes_count + 2)* sizeof(int));
    }

    改正代码:

    HGLOBAL::gpu_def[i].nodes_link=(int **)malloc((HGLOBAL::gpu_def[i].nodes_count_class1 + 1) * sizeof(int *));
    for( j = 0; j <= HGLOBAL::gpu_def[i].nodes_count_class1; j++)
    {
    printf("j = %d ",j);
    HGLOBAL::gpu_def[i].nodes_link[j] = (int *)malloc((HGLOBAL::total_nodes_count + 2)* sizeof(int)); //XXXXXXXXXXXXXXXX
    memset(HGLOBAL::gpu_def[i].nodes_link[j],0,(HGLOBAL::total_nodes_count + 2)* sizeof(int));
    }

    就差一个星号,调了一天半的代码!

  • 相关阅读:
    异步方法单元测试
    docker常用命令备忘
    MQ消息最终一致性解决方案(转载)
    JAVA学习知识杂烩
    ASP.NET Core快速入门(第2章:配置管理)- 学习笔记(转载)
    NETCore下IConfiguration和IOptions的用法(转载)
    ASP.NET Core 之 Identity 入门(转载)
    vue+elementui+netcore混合开发
    JWT签名与验签
    使用Machin公式计算
  • 原文地址:https://www.cnblogs.com/laozhuang/p/9082362.html
Copyright © 2011-2022 走看看