结构体指针释放的问题
2012-12-11 14:42
162 查看
最近写GIF解析,使用了很多结构体指针。
常常出现在指针delete的时候 异常。
具体如下:
最后 delete GIFGlobolColorTable 的时候异常。
调试发现 在循环中GIFGlobolColorTable 指针一直在做++ ,导致最后delete的时候,指针的位置已经偏移申请的位置gct这么长
改正方法如下:只需改变最后两句
常常出现在指针delete的时候 异常。
具体如下:
RGBQUAD *GIFGlobolColorTable;//保存全局颜色列表 GIFGlobolColorTable = new RGBQUAD[gct]; memset(GIFGlobolColorTable,0,gct*sizeof(RGBQUAD)); if (GIFGlobolColorTable != NULL) { GifColorType * pColor = GifIn->SColorMap->Colors; for (int i = 0;i<gct;i++) { GIFGlobolColorTable->rgbBlue = (BYTE)pColor->Blue; GIFGlobolColorTable->rgbGreen = (BYTE)pColor->Green; GIFGlobolColorTable->rgbRed = (BYTE)pColor->Red; GIFGlobolColorTable->rgbReserved = 0; pColor++; GIFGlobolColorTable++; } } else {exit(EXIT_FAILURE);} mycolortable = GIFGlobolColorTable - gct;
最后 delete GIFGlobolColorTable 的时候异常。
调试发现 在循环中GIFGlobolColorTable 指针一直在做++ ,导致最后delete的时候,指针的位置已经偏移申请的位置gct这么长
改正方法如下:只需改变最后两句
GIFGlobolColorTable-=gct; mycolortable =GIFGlobolColorTable;
相关文章推荐
- 结构体包含二级指针和二级指针内存的申请与释放问题
- 关于结构指针类型数组做函数参数的一个问题#include<stdio.h>typede
- void指针强转结构体指针问题
- 面试中遇到的问题:一个指针重复释放会出现什么情况
- C及opencv指针释放问题
- 关于未对齐指针释放问题(Non-aligned pointer being freed)
- c++指针存储应用程序和释放内存的问题
- strcat拼接两个字符指针后,释放内存崩溃问题
- 有关动态创建释放二维数组,以及指向数组的指针问题集合 .
- c++继承构造子类调用父类构造函数的问题及关于容器指针的问题及当容器里储存指针时,记得要手动释放
- 关于delete释放指针要注意的问题
- 指向vector的指针及空间释放问题 http://bbs.csdn.net/topics/320050082
- 【C++】使用局部变量赋值而非引用,导致内存多次释放的野指针问题
- 共享内存结构与指针问题
- 【C++】使用局部变量赋值而非引用,导致内存多次释放的野指针问题
- 有关动态创建释放二维数组,以及指向数组的指针问题集合
- 结构体对齐导致结构体数组大小变化引发的指针越界操作问题.
- 有关new出一个指针,将该指针指向另一个指针,释放不掉的问题
- C语言中动态分配数组指针的释放问题
- 一个简单的指针释放问题