桶排序时,释放内存出错?

#include
#include
int MaxValue(std::vectorb);

void BarrelSort(int c[], std::vectorb)
{
int max = MaxValue(b);
int* a=new int [max+1];
for (int i = 0; i < max+1; i++)
{
a[i] = 0;
}

for (std::vector<int>::iterator i = b.begin(); i !=b.end(); i++)
{
    ++a[*i];
}

//for (int i = 0; i < max+1; i++)
//{
//  std::cout << a[i] << std::endl;
//}

int k = 0;
for ( int i = 0; i < b.size(); )
{
    if (a[k] > 0)
    {
        for (unsigned int j = 0; j < a[k]; j++, i++)
        {
            c[i] = k;

        }
    }
    k++;

}

//delete[]a;为什么会报错

}

int MaxValue(std::vectorb)
{
int max = b[0];
for (std::vector::iterator i = b.begin(); i < b.end(); i++)
{
max > *i ? max:max = *i;
}
return max;
}

int main()
{
int *t = new int[];
std::vectorc = { 9,2,3,7,6,4,8,9,2,3,4, };

BarrelSort(t, c);
for (unsigned int i = 0; i <c.size() ; i++)
{
    std::cout << t[i] << std:: endl;
}
//delete[]t;为什么会报错
int s;
std::cin >> s;

}
释放内存的时候,会提示触发断点,未加载 wntdll.pdb。
百度知道里说勾选微软的符号服务器就可以解决,但实际勾选还是错误。

0

1个回答

一般都是越界读写造成堆空间的破坏,所以delete报错

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C 语言执行free()释放内存时 报错
今天遇到了一个问题。先用malloc()分配一定大小的内存,然后在主函数最后要对这些内存进行释放。调用free函数,执行报错。单步调试 执行free()后的报错如图 1所示。 最终发现我是这样做的:例如 分配10个元素内存,我对这10个元素进行了赋值,最后是调用了free()函数,报错!!! 如果我分配10个元素的内存,只对9个(只要小于10就行)元素进行赋值,再调用free()函数,就不会报
C++内存释放报错
内存释放报错界面:报错原因:在申请内存空间时出错,导致内存使用越界!解决方案:严格分配内存,严格使用内存!---------------------------------------------------------------------------2018.4.23注意内存分配时sizeof()中的类型,不能是指针!!!...
OpenCV 释放 vector 内存莫名崩溃的问题
  当我想通过 swap 释放成员变量的 vector的内存时,总是Crash,断点进去Crash的位置也很诡异: Crash 位置 : 还以为是内存没有对齐的问题,结果加了   #pragma pack(4) // 1, 2, 4 也是枉然。。。 T_T     局部变量vector的自动释放 Crash 位置:   而且同样的代码在OpenCV 3.1.0上是正常...
初学c++,释放动态数组内存出现的问题解决
先说问题: *** glibc detected *** ./a.out: free(): invalid pointer: 0x0000000002481054 *** ======= Backtrace: ========= /lib64/libc.so.6[0x32b3c75e66] ./a.out[0x400d9c] /lib64/libc.so.6(__libc_start
OpenCV的cvReleaseImage释放内存出错解决方法及Mat格式与IplImage格式相互转换
OpenCV的cvReleaseImage释放内存出错解决方法及Mat格式与IplImage格式相互转换
动态申请内存,释放出现错误
*** glibc detected *** ./a.out: free(): invalid next size (fast): 0x0000000000ae0010 *** ======= Backtrace: ========= /lib/x86_64-linux-gnu/libc.so.6(+0x7e846)[0x7fed53fd1846] ./a.out[0x4006db] /l
malloc和free(2)——malloc()申请内存得到指针,指针被改动,用free释放内存报错
malloc()分配内存,得到的内存指针,中间经过了改动,再调用free释放内存出现问题 Parr1D1 = data; 这一行代码写的很差,首先就是这个地方确实改变了指针Parr1D1,Parr1D1本身的值变化了。delete(或者free)时就会出现无效指针的错误。 至少给数组赋值应该用memcpy或snprintf函数来做。 Parr1D1 = dat
vector::clear
#include void clear(); 函数clear()删除储存在vector中的所有元素. 如果vector的元素是一些object, 则它将为当前储存的每个元素调用它们各自的析构函数(destructor). 然而, 如果vector储存的是指向对象的指针, 此函数并不会调用到对应的析构函数. 在第二种情况下, 为了完全删除vector中的元素则应使用一个类似于下的循环:
vector的内存释放
vector的内存释放 vector : C++ STL中的顺序容器,封装数组   1. vector容器的内存自增长  与其他容器不同,其内存空间只会增长,不会减小。先来看看"C++ Primer"中怎么说:为了支持快速的随机访问,vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储。设想一下,当vector添加一个元素时,为了满足连续存放这个特性,都需要重新分配空
MFC程序退出时内存报错的解决办法
追踪指针发现部分析构函数中的代码没有执行到,程序就直接报错了,仔细的查找后发现错误是由于delete了一个已经在这之前delete过的指针对象而导致的 当时的代码是这样的: 构造函数中: m_pLastPageInfo = new PageInfo;//因为在程序中直接指向已存在的PageInfo数组中的某一员,所以析构函数中不需要delete这两个指针 m_pCurrentPageInf
JNative中的指针Pointer内存溢出问题
近期小弟在写一个数据接口,需要调用dll文件,就找了一个jnative 的例子写了一下,运行是正常的,但是时不时的就会出现释放内存失败的异常。小弟尝试了多种方法,例如手动将pointer指针销毁或者指向空,或者干脆将jnative 的对象也尝试dispose,都没有解决。最后我尝试将jdk的版本降低,之前用的是1.7.0_80,换成1.7.0_03。竟然一切正常了,不再报错误。虽然小弟还不清楚到底
正确的释放指针,却报错,看看是否访问越界!!!
当出现你正确的释放指针,但是报错的时候,可以进行尝试看看 是否 访问越界,要是访问越界,会出现释放失败的情况,举个例子,看看下面的情况,会出现什么错误? int **data=new int *[4] for(int i=0;i&amp;lt;4;++i) { data[i]=new int [5]; } data[0][10]=1; for(int i=0;i&amp;lt;4;++i) ...
Visual Studio调试时,出现“触发一个断点”内存释放出现异常
问题描述: Visual Studio编译代码顺利通过,调试代码时出现“已触发一个断点”,如下图: 源代码类似: 分析: 在F11单步调试 delete[] send_data; 这行时,发现内存释放出现异常,导致出现“以触发一个断点”。很有可能是缓冲区溢出。 知识点: 缓冲区溢出:缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢出的数据覆盖在合法数据上...
关于链表删除结点的内存释放思考
关于链表删除结点的内存释放思考 struct { int number; struct *next; ) 假设有这样一段代码 p-next=p-&amp;gt;next-&amp;gt;next; free(p); print时就会发现 p-&amp;gt;number=0; 后来经过查询别人的博客,得到的结论是p的存储数据被0代替,但是依然可以通过链表遍历输出。 这...
opencv3.0 findContours出现错误,内存泄漏问题
前提是环境变量配置没有错误。在网上百度了多个办法,均不行。问题的根本在于用了错误版本的dll。例如本人使用的是opencv里面的x64版本,则在VS2013也是用的x64进行编译,配置时需如下: 执行目录最好包含x86的路径,库目录包含的是x64的库目录,因为用的是VS2013的x64进行,此处千万不要包含x86的目录。解决方案: 最后,使用不同版本的opencv,就将对应版本的dll拷贝进
理解c函数执行完后,释放内存
在C语言中,函数仅仅是一个小的功能块,函数执行完后(也就是函数功能完成),会根据调用约定来释放,该执行函数所占用的内存资源。这里的资源就是执行该函数所占用的栈内存。当函数执行完后仅仅就是释放该函数所用的占用的资源。 ...
Keras 循环训练模型跑数据时内存泄漏的问题解决办法
在使用完模型之后,添加这两行代码即可清空之前model占用的内存: import tensorflow as tf from keras import backend as K K.clear_session() tf.reset_default_graph()
指针的引用遇到的内存释放问题
先来一段程序:#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string.h>using namespace std;int getMem(char* &p) { int ret = 0; if (&p == NULL) { cout << "func getMem &p == NULL err
【Python面试必看系列】之当退出 Python 时,是否释放全部内存?
Q 10. 当退出 Python 时,是否释放全部内存? 答案是 No。循环引用其它对象或引用自全局命名空间的对象的模块,在 Python 退出时并非完全释放。 另外,也不会释放 C 库保留的内存部分。...
C++ new动态分配内存和delete释放内存
C++中使用简便而强大的new和delete运算符来进行动态内存的分配. 值得注意的是,new和delete和c语言中的malloc和free不同,new和delete是运算符,因此执行效率更高. 如何使用new , delete 呢? 首先我们来看一段代码: int *p = new int; 我们可以看到有那些元素. 首先是int, 它的含义是声明指针类型; 其次
记录一次JNA调用c的内存异常
因为在项目中需要调用c,用到了JNA,运行项目是没有问题的,但是跑多了程序就直接崩溃,想来想去,还是没有思路,作为Java开发,很少有自己手动释放内存的习惯,因为JVM已经替我们做了,但是利用JNA掉用的时候涉及到了C,不会自动释放内存,需要手动释放内存。在此记录此坑。以下是手动释放内存的例子。 public String getHostName() throws LibvirtExc...
C++ 内存释放解析
class Test { /* . 2.类对象中: . 2.1.对象成员变量的内存 随对象内存释放而释放 . 如 对象成员变量:a, b, c . 2.2.对象成员变量指针指向的堆内存(new 出来的),需用 delete 在析构函数中释放 . 如 指针指向的堆内存:*b . 3.类对象内存: . 3.1.若类对象如下main 中 t1,则其对象内存存放于栈中 ....
内存智能释放超级好用
内存智能释放内存智能释放内存智能释放内存智能释放内存智能释放
delete引起的debug错误(有关内存释放的一些问题)
//刚开始以为delete有问题,后来发现越界而已 testsort("快速排序②:", Quick2Sort, arr1, 0, n-1);//若为n就会越界 看你的界限是不是写的对,有没有越界更多深层问题:http://blog.csdn.net/phenixyf/article/details/49304903#comments
ArcEngine开发中内存不能释放浅析
阐述了.net中托管资源和非托管资源的管理机制,AE中有些内存对象不能释放的情况,并进行了测试。
c++ 释放已经释放的内存会出现的错误
_CRT_SECURITYCRITICAL_ATTRIBUTE void __CRTDECL operator delete(void* const block) noexcept { #ifdef _DEBUG _free_dbg(block, _UNKNOWN_BLOCK); #else free(block); #endif } 此时 输出显示的是 0x00007FF9A86E547E (u...
关于通过 malloc 开辟的空间在调用free函数时free函数是如何确定释放空间大小的
提出问题:如题,通过malloc开辟的空间,在开辟时会指定空间大小,但是在调用free时,却没有指定空间大小,那空间的大小信息是怎么处理的呢?分析问题:既然在调用free(p)函数释放空间的时候不需要输入空间大小的信息,那么很有可能在与指针p关联的内存中存储着空间的大小信息, 果断百度了一把,大家的说法是在即将被释放的首地址p的前面的低地址空间中存储着空间的大小信息。解决问题:- 在机器上做个测试...
stm32 移植cJson 注意free释放内存!!
如题: 关于怎么移植的网上有很多参考文档,也很简单,因为cjson只有2个文件,一个cJSON.c 一个cJSON.h文件。 我用的是原子的stm32 工程文件测试,他们有自己定义的malloc.c      malloc.h,很方便可以直接用。 需要修改的就是下面:把原本的json malloc 和free替换成我们自己的,如下代码 static void *(*cJSO
在dll里面申请内存, 主程序释放导致AV
查资料得知, dll里面申请的内存与主程序内存存放地方不一致, 所以dll里面new的内存, exe里面delete是要AV的.        所以只有在dll里面再export一个delete功能的api出来 : ICLASS_API void __stdcall fastDelete(void* pvAddr) { delete pvAddr; } ICLASS_API void __s
用户注册表使用的内存没有被释放。
日期(A):08-1-14 来源(S):USerenv 时间:14:16:39    类别(R):无 类型(E):警告       事件 ID(I):1517 用户: 计算机(0): 描述(D): Windows 保存了用户 ADMIN\Administrator 的注册表,因为在注销时一个应用程序或服务还在使用此注册表。用户注册表使用的内存没有被释放。当不再使用注册表时,它将被卸载。...
strcat拼接两个字符指针后,释放内存崩溃问题
在实际开放中,我们可能会用到strcat拼接两个字符串,例如 char a[6] = "hello"; char b[6] = "world"; strcat(a,b); free(a); free(b); 此时会出现越界情况,由于a只有6个字符的空间,拼接后超出了本身空间大小,因此会报错, 所以需要用realloc重新给a分配足够的空间来存储新的字符串。
命令释放SQL Server占用的内存
SQL Server 占用的内存不会自动释放,可以通过设置最大内存的方式手动释放   --强制释放内存   CREATE procedure [dbo].ClearMemory     as       begin   --清除所有缓存   DBCC DROPCLEANBUFFERS   --打开高级配置   exec sp_configure 'show advanced options',...
IplImage与Mat的相互转换 内存泄漏
跑视频的时候内存蹭蹭往上涨,尬。 原来是Iplimage和Mat之间转化的时候,释放内存问题。 先引入浅拷贝和深拷贝问题。 //IplImage—>Mat   //EXAMPLE:   //浅拷贝:   IplImage* pBinary=cvLoadImage("c://temp.jpg",0);   Mat Img;   Img=cvarrToMat(pBi
c++ 动态分配内存delete多次出现的错误
new分配内存,delete之后再次delete时会出错。 windows系统出现类似错误,问题事件名称为 APPCRASH 。 #include int main() { int *a = new int; *a = 1; std::cout << a << std::endl; std::cout << *a << std::endl; delete a;
Pytorch内存泄露(僵尸进程)解决办法
nvidia-smi         发现内存泄露问题,即没有进程时,内存被占用fuser -v /dev/nvidia*         发现僵尸进程ps x |grep python|awk '{print $1}'|xargs kill        杀死所有僵尸进程命令解读:ps x: show all process of current usergrep python: to get ...
opencv CvMemStorage内存释放的方法
调用cvReleaseMemStorage(&memStorage);(memStorage为CvMemStorage *memStorage变量)即可
C++编程一定主动释放内存
C++编程一定主动释放内存C++编程一定主动释放内存 C++编程一定主动释放内存 C++编程一定主动释放内存; C++编程一定主动释放内存; C++编程一定主动释放内存; 最近在写C++的程序,由于之前使用C#语言养成的习惯,不主动释放内存,结果最近悲剧接连发生,在C#与C++之间交互时,总是莫名其妙的问题,特在此记录,以提醒自己。 ...
关于linux 内存重复释放的问题
内存申请函数malloc,对应的释放函数为free,多次释放会造成系统未知问题,鉴于free对指针指向NULL的指针释放后不会有任何操作,因此有必要在释放后将指针清0。但有时候将指针传给其它函数时,比如被其它函数调用后再释放就可能要注意点,如下函数 #include #include #include #define SYS_NULL 0 #define FREE_MEM(x)
指针与delete释放内存
杂项运算符 下表列出了 C++ 支持的其他一些重要的运算符。 运算符 描述 sizeof sizeof 运算符返回变量的大小。例如,sizeof(a) 将返回 4,其中 a 是整数。 Condition ? X : Y 条件运算符。如果 Condition 为真 ? 则值为 X : 否则值为 Y。 , 逗号运算符会顺序执行一系列运算。整个逗号表达式的值是以逗...
c++实现简单内存池,维护可使用列表
参考自<C++ primar> 事先分配大的内存块。 当申请内存时,从内存块中取出空闲的部分。 当释放 内存时,将释放 的内存加入到可使用列表中(freelist )
相关热词 c#异步发送kafka c#窗体编号 c# 操作二进制文件 c# 反射 机制 c#线程 窗体失去响应 c#角度转弧度 c# 解析gps数据 c# vs设置 语法版本 c# json含回车 c#多线程demo