
获得徽章 16
- #每天一个知识点# 今天发现一个bug,就是互斥锁导致程序主进程阻塞,查了一天,也没有找到原因是哪里导致的没有unlock, std::unique_lock<std::mutex> lock(_mutex);竟然都能写出来死锁也是醉了,但是我使用cmake生成的sln,编译出来的竟然没有发生死锁,所以这肯定是工程配置的问,但是怎么排查呢,好痛哭哦展开评论点赞
- #每天一个知识点# LNK1318: 非意外的 PDB 错误: FORMAT (11)
今天再次遇到这个问题,清理项目,重新编译也没有解决这个问题
后来看网上说是因为无法操作pdb导致的,我尝试着删了了debug目录,仍旧没有解决这个问题,后来尝试着寻找这个pdb文件,发现生成到了其他地方,删除这个pdb后,就正常通过了链接,有点坑!展开评论点赞 - #每天一个知识点# delete只是标记指针所指向的内存区域可用,并没有消除指针所指向区域的数据。
如果在delete之后和你再次调用指针之前那块区域没有被分配作其他用途的话,那你还是可以通过指针访问内存上的数据的。但是,如果在你调用之前,内存就已经分配作其他用途的话,你通过指针访问那块区域的结果就是未知的。
所以,delete以后要将指针置零,标记为空指针,今天就被这个问题坑住了!展开等人赞过210 - #每天一个知识点# 公司的电脑编译Android好慢哦,然后编译环境经常容易出现各种小问题导致编译失败,ndk开发好痛苦哦,又好开心,每次改一行代码,就可以出去抽根烟,回来还在编译,这开发效率真的很爽,老板看了都夸我是黑心打工人,又拿我没办法,家人们,我的苦谁懂啊!等人赞过75
- #每天一个知识点# void* operator new(size_t size) {}
void operator delete (void *p) {}
对new ,delete进行重载,可以实现类似的内存检测功能,但是这个会带来性能问题,所以在release模式下,这些代码也不能编译到项目中,我们可以选择使用预处理宏来规避这个问题。展开评论点赞 - #每天一个知识点# 夜神模拟器无法通过adb devices发现设备,折腾了好久,也使用夜神自带的adb都不行,最后百度发现adb connect 127.0.0.1:62001,竟然要通过网络,好吧,夜神真厉害,服了赞过43
- #每天一个知识点# 写了个vscode插件,用来调试监控Android项目的一些情况,我想让vscode和应用程序进行交互通讯,vscode创建一个server,app通过网络连接上来,这个成本有点高,虽然很灵活,因为我一直是通过adb调试监控app的,想着还能不能通过adb实现类似的功能,发现还真可以:
adb shell am broadcast展开赞过评论1 - #每天一个知识点# 使用 char* p = new char[100]申请一段内存,然后使用delete p释放,有什么问题?
A.会有内存泄露
B.不会有内存泄露,但不建议用
C.编译就会报错,必须使用delete []p
D.编译没问题,运行会直接崩溃
答案为 B 分析:
当用delete来释放用new int[]申请的内存空间时,由于其为基本数据类型没有析构函数,所以使用delete与delete []相同,两者都会释放申请的内存空间
若是自定义的数据类型,有析构函数时,用new []申请的空间,必须要用delete []来释放,因为要delete []时会逐一调用对象数组的析构函数,然后释放空间展开赞过评论2 - #每天一个知识点# 今天又是折腾人的一天,svn提交代码又是一大片的红色修改,但是好多都是换行符不一样,内容都一样,svn也提供了diff的可视化界面,但是差异文件有点多,不可能一个一个人工手动看,所以就查了下svn的帮助手册,发现svn命令可以检索到差异,并且可以忽略换行符,命令如下:
svn diff -x --ignore-eol-style you_file展开评论点赞