VLine[-1]=VLine[width]=128 数组的负一地址代表啥
最近在调算法是,涉及到rgb转yuv数据的一个函数,出现了这种常见错误:如下
unsigned char *VLine = (new unsigned char[width+2]);//+1;
//ULine[-1]=ULine[width]=128; //-1的16位二进制表示:1111 1111 1111 1111
此时uline mem指向0xFFFF这个地址。
delet []VLine;
结果.如果住掉赋值128的那一行,正确通过没错,要是不住掉就会产生heap堆内存错误信息;
问题原因:
1.是有关数组-1,-2,-3,-4的地址代表分配头信息,不然free(x)可以不要知道大小就可以释放的原因;
2.vline指向动态分配后的地址,然而又对其进行赋值,造成vline指向了一个常量空间地址,,只读data段上,而不是堆区域了,常量地址的分配内存,只能在程序退出后才能自动释放。
:指向的是个定长且固定内容的指针,不存在变化,所以不用释放。而且,你也无法释放,等程序结束自动释放
解决办法:
1.
point = new char[5];
point = "fda";//这句话注销了就对了 不知道为什么
--------------------------------------------------------------------------
point = "fda"
应改为:
memmove( point, "fda", 3);
或:
strcpy( point, "fda");
在最前面加上:
#include "string.h"
2.point[0] = 'f'; point[1] = 'd'; point[2] = 'a';
附上相关资料:
http://dearymz.blog.163.com/blog/static/205657420062271155250/
http://bbs.csdn.net/topics/390359048
http://zhidao.baidu.com/link?url=o9US18FIs-JuvBOQgNTL1diMNfiyRoGvOGHMlKoDZCGMu1UApWeIVuy-8UO4MV-0Jlryiz05jaKvK4RQfDRh0a
http://wenku.baidu.com/link?url=KrHpusbOUWu25UK0WbNdP3ZDsBT_jKe4nptbEu8h6cbULhVVHB_R5RLm8zl_oSE6-by5QG3jay9-o8lQOVDDP6Gq3-oNvuCJu2HATkz8Er7 delet 常犯的几种错误
http://bbs.pediy.com/showthread.php?t=176091 delet 出问题
http://bbs.csdn.net/topics/300170474 a[-1]问题
http://blog.csdn.net/daniel_ice/article/details/6857019 汇编解释数组和取数组
VLine[-1]=VLine[width]=128 数组的负一地址代表啥的更多相关文章
- C语言中数组使用负数值的标记
·引 对数组的认知 在c语言中,我们经常使用的一个结构便是数组,在最开始学习数组的时候,它被描述成这样(以一维二维数组为例):一维数组是若干个数连续排列在一起的集合,我们可以通过0-N的标记(N为数组 ...
- Python数据分析入门(十七):绘制条形图
条形图的绘制方式跟折线图非常的类似,只不过是换成了plt.bar方法.plt.bar方法有以下常用参数: x:一个数组或者列表,代表需要绘制的条形图的x轴的坐标点. height:一个数组或者列表,代 ...
- 关于jquery.extend()的坑:我的数组变成相同元素了?
首先呢我有一个数组,存放了多个json对象.这些json对象的属性有缺失,我设置了一个对象模板来存放默认值 先来看一段代码 var source = [ { name: 'dapianzi', bor ...
- JavaScript权威指南 - 数组
JavaScript数组是一种特殊类型的对象. JavaScript数组元素可以为任意类型,最大容纳232-1个元素. JavaScript数组是动态的,有新元素添加时,自动更新length属性. J ...
- 后缀数组的倍增算法(Prefix Doubling)
后缀数组的倍增算法(Prefix Doubling) 文本内容除特殊注明外,均在知识共享署名-非商业性使用-相同方式共享 3.0协议下提供,附加条款亦可能应用. 最近在自学习BWT算法(Burrows ...
- 字符串 --- KMP Eentend-Kmp 自动机 trie图 trie树 后缀树 后缀数组
涉及到字符串的问题,无外乎这样一些算法和数据结构:自动机 KMP算法 Extend-KMP 后缀树 后缀数组 trie树 trie图及其应用.当然这些都是比较高级的数据结构和算法,而这里面最常用和最熟 ...
- jquery遍历对象,数组,集合
1.jquery 遍历对象 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTM ...
- 二维数组 cudaMallocPitch() 和三维数组 cudaMalloc3D() 的使用
▶ 使用函数 cudaMallocPitch() 和配套的函数 cudaMemcpy2D() 来使用二维数组.C 中二维数组内存分配是转化为一维数组,连贯紧凑,每次访问数组中的元素都必须从数组首元素开 ...
- php将长字符串拆分为指定最大宽度的字符串数组
/** * 将字符串拆分为指定最大宽度的字符串数组.单字节字符宽度为1,多字节字符通常宽度为2 * @param string $msg 要拆分的字符串 * @param int $width 结果数 ...
随机推荐
- Swift,初始化
1.class中的值是没办法不赋值,不然会报错,那么就有个init的方法初始化(这个方法使得实例时必须加上参数) class test{ var a:String var b:Int init(a:S ...
- ajax请求不能下载文件(转载)
最近在做文件下载,后台写了个控制层,直接走进去应该就可以下载文件,各种文件图片,excel等 但是起初老是下载失败,并且弹出下面的乱码: 前台请求代码: $('#fileexcel').unbind( ...
- Queue 队列的用法
队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作. LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用. 以下实例演示了队 ...
- UNDO表空间损坏导致数据库无法OPEN
在数据库undo表空间文件损坏.或者undo表空间文件缺失的情况下.无法打开数据库. 这两种情况都能够视为一种情况处理,解决方法一样. 场景:在23:10的时候新建一个undo表空间undotbs02 ...
- 《深入理解Java虚拟机》笔记3
垃圾收集算法 (1)标记清除 根据根搜索确定对象是否已死,已死对象标记,然后一起清除. 这个其实不算什么算法,最正常想法应该就是这样.但是,缺点 是效率不高,如果有很多不连续的小对象需要回收,会花好多 ...
- cadvisor详解
一. cadvisor和k8s的耦合 cadvisor是一个谷歌开发的容器监控工具,它被内嵌到k8s中作为k8s的监控组件.现在将k8s中的cadvisor实现分析一下. k8s中和cadvisor的 ...
- EasyUI-DataGrid动态合并单元格
js /** * EasyUI DataGrid根据字段动态合并单元格 * @param fldList 要合并table的id * @param fldList 要合并的列,用逗号分隔(例如:&qu ...
- HTTP——代理协议 HTTP/1.1的CONNECT方法
我们平时使用HTTP协议无非就是GET.POST这些方法,但是HTTP的内容远不止那些.今天就来说说HTTP代理使用的CONNECT.这个不是在网页开发上用的,如果没兴趣就跳过吧. APACHE只是作 ...
- linux之getopt 函数(转)
命令行参数解析函数 —— getopt() getopt()函数声明如下: #include <unistd.h> int getopt(int argc, char * const ar ...
- AIDL调用指南
近期有需求要实现两个apk之间的通信,想到用AIDL来实现,现写一个demo学习下AIDL怎样使用. 这里我要实现一个apk(client端)调用还有一个apk(server端)的方法. 先实现ser ...