
暂无个人介绍
while(p != NULL){
free(p);
p = p->next;
}
上面这一段是 链表结构,同时,这一段是错误的。因为先释放,后引用。
我们来说这个问题“ 一次性分配较大内存,free如何获知该内存大小并完全释放,实现机制是”
可以参考这个:
https://blog.csdn.net/mmshixing/article/details/51679571
看不懂?没关系,简单来说,你看到的内存,并不是真正的内存。malloc 机制会额外维护一套数据,里面保存了
当前的数据的大小、位置等等,他都帮你做了。所以,你不必关心你申请了多少内存。
必须提一提 strcat 函数了。
char strcat( char str1, const char *str2 );
功能:函数将字符串str2 连接到str1的末端,并返回指针str1
str1 和 str2 不能 overlap,同时,必须保证 str1 有足够的空间
你首先要确定是哪类的 EVENT。
好吧,我来做一个通用的回答。
通畅,在 linux 端,我们会使用 epoll 函数来做事件循环:
如下举例:
很有意思。你需要可能是扫描数据。换句话说,你需要 scan entry。
这个问题就会变成,我有没有办法 拿到 scan entry
毫无疑问,答案是 YES
但是怎么拿呢,就要区分不通的芯片厂商了。
一种简单的方式是,直接找到芯片的(Wi-Fi芯片)的命令行手册,查找里面的说明,是否有两条命令:
一条是,开启扫描模式
一条是,获取扫描表项。
幸运的是,我知道,iwinfo 命令中,有一个 scan 参数可以进行扫描,可以间接达到你的目的。
如果不支持 iwinfo,那么就重新编译固件,将这个命令编译进去(或者安装进去)
如果上面的方式搞不定,你就要修改驱动代码,
在 beacon 和 probe 的处理程序中,将 扫描的表项上报至用户态。这个会麻烦一点。
还有一个命令叫做 iwinfo interface scan
不过既然已经打印出了不支持,恐怕就是驱动不支持吧。
你可以试着查找一下你的设备的网卡型号,上网搜索一下关于这个网卡的资料,大部分芯片厂商
除了实现一些基本的通用命令之外,还会有一些私有的命令。
例如:
iwpriv 类命令。
试试看
有意思的问题。我来说一下把。
这实际上是由 手机特性来决定的。
portal 认证是一个非标准的协议,是由手机端实现的。也就是说,这个页面我(也就是厂商)想怎么做就怎么做。
有些厂商认为,我既然实现的是一个 portal 认证,那么主要的目的就是为了让用户登陆,用户登陆完成后,就可以上网了,
我为了体验更好,为什么还要停留在这个页面呢?
综上所述,无解。在能够不使用 portal 的场景,尽量不要使用。
这是驱动的特性决定的,或者说,是Wi-Fi芯片厂商给予的驱动特性决定的。芯片厂商并不认为,Wi-Fi 密码是一个非常私密的物件,相比较于银行密码此类的。
实际上,密码可以分为两种,
一种是保存在 内存中,这种情况,无法持久化,也就是说,手机断电,下次你再连接同样的 Wi-Fi 就同样会弹出密码
一种是保存在手机 flash 上面(包括 TF 卡等),以文件的形式存在,手机的 Wi-Fi 在启动时候,会读取密码,并将密码下发到驱动中。
一般来将,Wi-Fi 是作为配置存在的,也就是说可以持久化,所以一般的形式是以密码存在文件中,只不过,用户必须root可以看到。
如果你想做到手机配置信息里查看不到保存的密码,可以有两种做法:
如上图所示,显然是 红框部分的 符号找不到了。
你需要查看你的代码中,有没有这个符号,并且确认是否在使用这个符号(或者是包含此符号所在的 运行库)
我再贴两个,以供参考:
连接被拒绝。一个是 你使用的账号没有权限,一个是 SSH 服务压根就没开(或者没有在标准端口上面开启)。
确认这两个是否有问题。
有意思的问题,我来小答一下,以抛砖引玉。
目前我所知道的有两个:
第一种情况: 如上面同学所说,提升运算速度。
举个例子:
int i = 2;
int k = i * 1024;
上面这个例子,在计算 k 的值,一般我们都会这么写。
这么写有问题吗?
当然没有问题,还相当标准。
但是这么写对性能没有什么帮助,如果我们清楚位运算会更快,那么驱动或者硬件的老手就会这么写:
k = i << 10;
当然性能上,对于大型服务器,不会因为你写了这么一句话,就会提升很多,但是如果是单片机的话,可能就会快很多。
还有人问,大部分我可能不是 乘以 1024,而是 乘以 1000,这种情况岂不是不行了。
我回答是:分情况。如果你的数值是约数,不需要精确的话,那么你依然可以这么写,如果是需要精确数值的话,恐怕不行。
第二种情况:减少内存损耗,好吧,也是因为单片机的原因。
举个例子:如果我有 4096 个成员,要标志,4096 个成员,是男是女(比如 1 是男,0 是女),大部分情况下,我们会这么写:
unsigned char member[4096]
内存损耗为 sizeof(member) == 4096 个字节
但是如果我们可以这么定义:
uint32_t member[128]
内存损耗为 sizeof(member) == 128 * 4 = 512 个字节 = 4096 位
也就是说,每一位代表一个成员的性别,1 是男,0 是女,是不是会节省很多内存呢?