关键词:
#include <iostream> #include <stdio.h> #include <memory.h> using namespace std; const int NN = 5; class Piece private: int r; int c; int** p; public: Piece() : r(0), c(0) p = nullptr; Piece(int r, int c, int (*pp)[NN]) this->r = r; this->c = c; this->p = new int*[r]; for(int i = 0; i < r; i++) this->p[i] = new int[c]; memcpy(this->p[i], pp[i], c * sizeof(int)); ~Piece() cout<<"delete"<<endl; for(int i = 0; i < r; i++) delete[] p[i]; delete this->p; int getR() return this->r; int getC() return this->c; int ** getP() return this->p; ; int N; int r, c; int m[10][10]; Piece piece[NN]; int pi = 0; void dump() for(int i = 0; i < pi; i++) for(int j = 0; j < piece[i].getR(); j++) for(int k = 0; k < piece[i].getC(); k++) cout << piece[i].getP()[j][k]; cout << endl; cout << endl; int main() freopen("d://1.text", "r", stdin); while (cin >> N && N) memset(m, 0, sizeof(m)); memset(piece, 0, sizeof(piece)); int p[NN][NN]; pi = 0; for(int i = 1; i <= N; i++) scanf("%d %d", &r, &c); for(int j = 0; j < r; j++) for(int k = 0; k < c; k++) char t; cin >> t; if(t == ‘0‘) p[j][k] = 0; else p[j][k] = i; Piece pp(r, c, p); piece[pi++] = pp; cout<<"for end"<<endl; //dump(); return 0;
输出
for end //循环结束输出
delete //删除pp对象
main end //main函数结束
//下面是5个delete 和 const int NN=5对应
delete
delete
delete
delete
delete
//所以, delete 0 永远都是安全的
//注意前面有个
memset(piece, 0, sizeof(piece));
使用jni遇到的诡异内存bug
jni返回到java层的字符串有时正确,有时错误。错误的字符串可能是任何一串字符,看起来很奇怪。通过加日志,得知生成的jstring已经不正确了,所以怀疑生成jstring用的char*有问题,可能被释放了。分析代码,里边用的char*是从st... 查看详情
同事写了一个责任链模式,bug无数!(代码片段)
...责任链工厂改造聊聊其他最近,我让团队内一位成员写了一个导入功能。他使用了责任链模式,代码堆的非常多,bug也多,没 查看详情
git删除分支的方式
...ature,bug,development等类型的分支。使用git的时候,尽量将每一个特性或者bug单独创建分支开发,这样方便提交pullrequest,方便代码审核,方便版本回滚。当我们在github,gitlab上图形化删除分支的时候,其实只是删除了git仓库中的分支... 查看详情
同事写了一个责任链模式,bug无数...
...责任链使用场景结语背景最近,我让团队内一位成员写了一个导入功能。他使用了责任链模式,代码堆的非常多,bug也多,没有达到我预期的效果。实际上,针对导入功能,我认为模版方法更合适!为... 查看详情
细说智能指针
...下,使用指针却忘记释放带来的危害。首先,我们要定义一个类。这次,还是定义女朋友类吧(之 查看详情
system32目录下.dll文件无法删除,文件正在被另一个人或程...怎么删除
SYSTEM32目录下.dll文件无法删除,文件正在被另一个人或程...,好像是病毒,.请问怎么删除啊●如果可执行文件的映像或程序所调用的DLL动态链接库文件还在内存中未释放,删除时就会提示文件正在使用,解决方法是删除系统的页面... 查看详情
foreach……in(代码片段)
使用一个变量迭代一个对象的所有属性值,对于每一个属性值,有一个指定的语句块被执行.作为ECMA-357(E4X)标准的一部分,foreach...in语句已被废弃,E4X中的大部分特性已被删除,但考虑到向后兼容,foreach...in只会被禁用而不会被删除,可以... 查看详情
[svc]共享内存(代码片段)
...列出共享内存,-s列出共享信号量,-q列出共享队列。ipcrm使用方法通过指定ID删除删除IPC资源,同时将与IPC对象关联的数据一并删除,只有超级用户或IPC资源创建者能够删除ipcrm-Mshmkey#移除用shmkey创建的共享内存段ipcrm-mshmid#移除... 查看详情
同事写了一个责任链模式,bug无数...(代码片段)
背景最近,我让团队内一位成员写了一个导入功能。他使用了责任链模式,代码堆的非常多,bug也多,没有达到我预期的效果。实际上,针对导入功能,我认为模版方法更合适!为此,隔壁团队也... 查看详情
free(代码片段)
...输出才能帮助我们了解系统的内存状况。buff/cache先来提一个问题:buffer和cache应该是两种类型的内存,但是free命令为什么会把它们放在一起呢?要回答这个问题需要我们做些准备工作。让我们先来搞清楚buffer与cache的含义。buffer... 查看详情
第五十六课树中结点的删除操作(代码片段)
返回的指针谁来负责释放呢?我们采取的措施是使用智能指针来管理这棵树的生命周期。 返回一棵子树的好处是在某些场合,我们能够将H、I、J、M重组,并将它们重新的加回原来的树中。示例:main函数使用了p指针... 查看详情
如何释放python占用的内存
...减少。例如foo(x)运行结束,x被销毁;当变量被赋值给另一个对象时,原对象的引用计数也会减少。例如x=4,这时候3这个对象的引用计数就减1了;使用del删除一个变量也会导致对象引用减少。例如delx;对象从集合对象中移除。... 查看详情
一个逗号表达式导致的bug
前两天一个同事写了一个需求提测,测试的时候发现了一个BUG,然后他改完后我没太看懂就咨询了下是什么情况。 需求背景:电脑内存小于某个条件了就做一个事情。 示例代码:MEMORYSTATUSEXstatus;GlobalMemoryStatusEx(&status)... 查看详情
译ringbahn的两个内存bug(代码片段)
...导致段错误,分配器中止以及匪夷所思的未定义行为。我已经修复了我所能找到的bugs 查看详情
c++内存重叠(代码片段)
...我们使用指针访问内存时,如果指针指向的内存区域与另一个区域有交叉部分,就会产生内存重叠。如下图,内存拷贝的两种情况:第一种情况下,拷贝重叠的区域不会出现问题,内容均可以正确地被拷贝。第二种情况下,问题... 查看详情
在c语言进行编程中,为啥要释放旧内存?
hstring*sub先声明了一个指针,我看别人的程序,为什么接下来就把这个指针的内存给释放了(if(sub->ch)free(sub->ch);/*释放旧空间*/),之后再使用malloc函数重新给它分配内存,为什么要这样做呢?不是多此一举吗?我们老师说的是... 查看详情
git:恢复一个已经在提交中被删除的文件
...家照顾一下~这里要研究的问题是,如果我们在之前的某一个提交中删除了一个文件,如何使用git将此文件恢复出来。首先我们要做的是找到当时删除的这个文件对应的提交。比较简便的方法是使用一些图形化的Git软件,可以直... 查看详情
valgrindc++内存泄漏检测(代码片段)
...泄漏有分配,没有释放malloc/new/new[]和free/delete/delete[]使用混搭两次释放内存LinuxValgrind使用1、下载源码 https://sourceware.org/pub/valgrind/valgrind-3.17.0.tar.bz22、解压包安装 tar-jxvfvalgrind-3.17.0.tar.bz2cdvalgrind-3.17.0./configuremakesudomakeinstall3... 查看详情