工作笔记 希望大家一起交流~~~~~~~~~~~~
20130407
1,在类中定义一个字符串指针,构造是给该指针赋值,但是在使用是发现其内容为空 --------------------------没有给该指针分配空间,new char(100) 分配100字节
2,工作中使用的VS工程似乎建立的时候为ascii 代码936,导致在使用类向导添加按钮的响应函数时注释中的中文不能保存,保存要转换文件编码,我将那些注释去掉,导致问题是资源的ID和之前建立的重复,响应函数调用的是别的按钮。
工程中的乱码 实在不明白。建议: 建立工程时为UNICODE、语言为英文、不要用中文注释。
3,SendTo 函数rSocketAddress地址错误是,onreceive 得到10054号错误。
4,程序中一个VIEW类的按钮响应函数 写入
PostQuitMessage(0);
表示推出该程序,发现一个问题,该view类的析构函数不会被调用,虽然说进程结束,不会还有内存泄漏问题,该方法总是让人不舒服。
网上有人说可以向主窗口发送 WM_CLOSE消息解决。未验证。
5,addrinfo 成员变量前缀ai -------------------------addrinfo
- struct addrinfo {
- int ai_flags; /* customize behavior */ // AI_NUMERICHOST 以数字形式返回主机地址 AI_PASSIVE 套接字地址用于监听绑定
- int ai_family; /* address family */
- int ai_socktype; /* socket type */
- int ai_protocol; /* protocol */
- socklen_t ai_addrlen; /* length in bytes of address */
- struct sockaddr *ai_addr; /* address */
- char *ai_canonname; /* canonical name of host */
- struct addrinfo *ai_next; /* next in list */
- .
- .
- .
- };
6, Windows 在*。exe中触发了一个断点,
其原因可能是堆被损坏,这也说明 Components.exe 中或它所加载的任何 DLL 中有 bug。原因
char *p = new char[100];
p++;
delete p; 也就是 释放内存指向的位置被修改
查看程序代码发现 类似问题,
char p = new char [100];
char test[] = "123"
p = test;
delete p; //p值发生变化。
7, char *p = new char (100) //意思申请到一字节内存,赋值100 , 分配100字节应为 char[100] .
8,cvLoadImage 不可放到一个while循环内, 导致内存泄露十分严重, 最后卡死。