C++动态数组中的C6385, C6386警告

摘要:
警告C6385从“m”读取的数据无效:可读大小为“col*sizeof”字节,但可能已读取“8”字节。警告C6386写入“m”时缓冲区溢出:可写大小为“col*sizeof”字节,但可能写入“8”字节。这两个警告都与动态数组的变量大小和实际使用的下标有关。例如,以下代码voidKnap::dp(){//ifreturn;int**m=newint*[n];form[i]=newint[c+1]{0}For{…form[i][j]=max;}m[0][c]=m[1][c];如果m[0][c]=最大值;。。。福德莱特[]米[];删除[]m;}二维阵列m适用于n*(c+1)大小的空间。维度是一个变量,但下标在实际操作中使用n-2和m[1][c]。因此,至少需要n˃2才能取消第一行的注释,这可以消除C6385警告
警告  C6385   从“m”中读取的数据无效: 可读大小为“col*sizeof(int)”个字节,但可能读取了“8”个字节。  
警告 C6386 写入到“m”时缓冲区溢出: 可写大小为“col*
sizeof(int)”个字节,但可能写入了“8”个字节
这两个警告都与动态数组的可变大小与实际使用的下标有关
如以下代码
void Knap::dp() {
    // if (n <= 2 || c <= 0) return;

    int** m = new int* [n];
    for (int i = 0; i < n; i++)
        m[i] = new int[c + 1]{ 0 };
    
        ... 
    for (int i = n - 2; i > 0; i--) {
        ...
        for (int j = w[i]; j <= c; j++)
            m[i][j] = max(m[i + 1][j], m[i + 1][j - w[i]] + v[i]);
    }


    m[0][c] = m[1][c];
    if (c >= w[0])
        m[0][c] = max(m[0][c], m[1][c - w[0]] + v[0]);

    ...
    for (int i = 0; i < n; i++)
        delete[] m[i];
    delete[] m;
}

二维数组m申请了 n * (c+1) 大小的空间,维度是变量

但在实际操作中下标用到了 n-2,和m[1][c],因此至少要求n>2

取消第一行的注释,可以消除C6385警告

 
 

免责声明:文章转载自《C++动态数组中的C6385, C6386警告》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇回溯法 | 旅行商问题(TSP问题)mysql时间表示和计算下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

小程序真机上报错 for developer: some selectors are not allowed in component wxss , including tag name selectors, id selectors, and attribute selectors

在引用组件的组件和页面中使用后代选择器在某些极端情况下会产生意想不到的性能。如果是,请避免使用它们。子元素选择器只能在视图组件及其子节点之间使用,其他组件可能会导致意外情况。继承的样式(如字体和颜色)将从组件外部继承到组件内部。除了继承样式之外,app.wxss中的样式和组件所在页面的样式对于自定义组件无效。...

CommonJS规范

NodeJS是本规范的实现。环境、运行、JSGILocaland远程包和包管理关于每个子规范的具体定制进度,请参考官方网站描述:Apache CouchDB和node.js。然而,这些项目中的大多数只实现了CommonJS的一些规范。具体项目及实施请参见官方网站描述:http:...

【转】MUD教程--巫师入门教程4

在MUD中,为了解决定时触发某种现象,一般有两种方法,一种是通过call_out()延时呼叫,另一种就是通过心跳。于是,对于要跨起离线前后的象做牢这类的事,大多都是采用condition。附:由于大多数MUD里的心跳是每两秒调一次,5+random是5至14次,因此可以看出每一个condition被调用的时间是平均19秒。然后它会按照condition的名字...

使用事务和SqlBulkCopy批量插入数据

类似与MicrosoftSQLServer包中名为bcp的命令行应用程序。但是使用SqlBulkCopy类可以编写托管代码解决方案,性能上优于bcp命令行应用程序,更优于如Insert方式向SQLServer表加载大量数据。SqlBulkCopy可以应用到大批量数据的转移上,而不管数据源是什么。之前在做winform开发的时候,发现当datagridview...

SpringBoot工程通过Maven引入自定义Jar包

A工程为:common工程打成jar包:common-0.0.1-SNAPSHOT.jar注意:A工程打包时要使用maven的插件进行打包,不然会打成SpringBoot的Jar包,无法使用。--字符集编码--˃打包时跳过测试配置1.8˂!...

SqlServer数据库存入decimal类型数据注意事项

对于sqlserver,Decimal可用于存储具有小数点和固定值的值。与浮点和实数不同,十进制用于存储近似值。目的是满足精确数学运算的需要。它是最大和最精确的浮点数字类型。对于十进制类型,请注意必须指定精度;否则,十进制只能存储为整数,就像int一样。例如,十进制是存储长度为18位和小数点后2位的数据。...