one os

动态内存分配时需要注意哪些坑?

二次信任 提交于 2020-11-15 14:18:03
在使用C语言开发嵌入式产品的过程中,当使用到malloc函数时候都会有一个争议, “使用动态内存分配安全吗?” ,就连美国军方在safety-critical的嵌入式航空电子设备代码中,也禁止动态内存分配,我们来细细分析下。 C 库函数 - malloc() 函数简介 malloc的全称是memory allocation,中文叫动态内存分配,用于申请一块连续的指定大小的内存块区域以void* 类型返回分配的内存区域地址。 当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存,且分配的大小就是程序要求的大小。 函数的声明 用来分配所需的内存空间,并返回一个指向它的指针。 //参数 :size -- 内存块的大小,以字节为单位 //返回值:指针 -- 指向已分配大小的内存 // NULL -- 如果请求失败 void *malloc(size_t size) 介绍一下用法 #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char *str; str = (char *) malloc(15); strcpy(str, "hello world"); printf("String = %s, Address = %u\n", str, str); free(str)

五分钟看懂抓包神技:DPDK

那年仲夏 提交于 2020-11-12 16:44:43
我是一个网络监控软件,我被开发出来的使命就是监控网络中进进出出的所有通信流量。 一直以来,我的工作都非常的出色,但是随着我监控的网络越来越庞大,网络中的通信流量也变得越来越多,我开始有些忙不过来了,逐渐发生 丢包 的现象,而且最近这一现象越发的严重了。 万兆流量需求 一天晚上,程序员哥哥把我从硬盘上叫了起来。 “这都几点了,你怎么还不下班啊?”,我问小哥哥。 “哎,产品经理说了,让我下个月必须支持万兆网络流量的分析,我这压力可大了,没办法只好加班了。”,说完整理了一下自己那日益稀疏的头发。 “万兆?10Gbps?开玩笑呢吧?这是要累死我的节奏啊” “可不是吗,可愁死我了。你快给我说说,你工作这么久了,有没有干的不爽的或者觉得可以改进的地方都可以给我说说”,小哥哥真诚的看着我。 我思考了片刻说到:“要说干的不爽的,还真有!就是我现在花了太多时间在拷贝数据包了,把数据包从内核空间拷贝到用户态空间,以前数据量小还行,现在网络流量这么大,可真是要了我的老命了。” 小哥哥叹了口气,“哎,这个改不了,数据包是通过操作系统的API获取的,操作系统又是从网卡那里读取的,咱们是工作在用户空间的程序,必须要拷贝一次,这没办法。你再想想别的?” 我也叹了口气,“那行吧,还有一个槽点,数据包收到后能不能直接交给我,别交给系统的 协议栈 和 netfilter框架 他们去处理了,反正我拿来后也要重新分析

当科技有了温度。。。

故事扮演 提交于 2020-11-11 19:50:26
15岁 , 初二 学生,用人脸识别等AI技术,自己编程、自己3D建模,打造了一款「智能项圈」,引爆了全网。 △ 视频来源:都市快报 视频中的主人公叫 陆原 ,来自杭州市保俶塔实验学校,目前在读初二。 而让他真正火爆的原因,不仅是以如此小的年纪做了 这样的发明,更是因为这项发明背后的原因: 为了让患有阿尔兹海默症的大外婆,能够认得回家的路,记起身边的亲人。 因此,陆原特意为这个智能项圈起了格外温馨的名字—— 「勿忘我」 。 如此的举动,让众多网友为之感动、赞叹: 当然,也有网友觉得神似《寻梦环游记》。 「勿忘我」智能项圈 前面也提到,陆原之所以制作这个「智能项圈」,是为了他患阿尔兹海默症的外婆。 她常常记不得自己前几分钟说过的话,记不得回家的路,后来渐渐记不得我妈了,也记不得大阿姨了,记不得身边的亲人了。 在大外婆被确诊时,陆原还小,也没有接触到编程知识,虽然没有实际行动,但是外婆生病这件事一直放在心上。 时间就来到了今年暑假,陆原突发奇想,利用自己的编程知识,给大外婆做一了记人神器。 于是,「智能项圈」也就应运而生了。 据他本人介绍,硬件上使用了Arduino Nano、紫外线传感器、「哈士奇」图像识别传感器,使用Mind+进行编程。 外观上使用的是123D Design 建模,使用光固化3D打印技术制作外壳,并对此进行打磨抛光喷剂。 整个制作时间并不长,从编程到建模各用1天