首页 > TAG信息列表 > ptr

Brainfuck是什么

Brainfuck是什么 Brainfuck是一种极小化的计算机语言, 它是由Urban Müller在1993年创建的。 由于fuck在英语中是脏话,这种语言有时被称为brainf*ck或brainf**k,甚至被简称为BF。 Brainfuck 由八种运算符构成, 它基于一个简单的机器模型,出了指令, 这个机器还包括: 一个字节为单位、被

gethostbyname示例

#include <netdb.h> #include <arpa/inet.h> #include <stdio.h> #include <stdlib.h> const int inet_addrstrlen=16; int main(int argc, char **argv) { char *ptr, **pptr; char str[inet_addrstrlen]; struct hostent *hptr; while(--arg

LyScript 通过PEB结构解析堆基址

LyScript中默认并没有提供获取进程堆基址的函数,不过却提供了获取PEB/TEB的函数,以PEB获取为例,可以调用dbg.get_peb_address(local_pid)用户传入当前进程的PID号,通常PID号可以使用dbg.get_process_id()函数得到,当得到了PEB进程环境块的基地址,那么获取堆基址就变得很简单了。 首先以

std::bind绑定unique_ptr

问题的来源,绑定和unique_ptr std::bind绑定unique_ptr的时候生成的类型并非std::function,而是一个不可拷贝的类型,这跟unique_ptr的特性有关,这意味着如果需要暂时保存绑定的函数,没有能够接受对象的类型声明 如果不需要保存可以使用auto来接受绑定的对象,然后调用 void Test(int val

单例以及模板类的静态成员变量的生命周期

我们有如下的单例设计模式的实现: template <typename T> class OnceSingle { public: OnceSingle() = delete; OnceSingle& operator=(const OnceSingle<T>& m) = delete; ~OnceSingle() = default; class CGFunctionClass { public:

math.h -lm随记(一)

最近可能随手会记很多C/C++语法相关的东西,都是随手记的,如果后续有空可能会整理成文章。 1.关于gcc的lm编译选项: 观察易知,像stdio.h,stdlib.h或者math.h之类的头文件,包含的都是函数的声明而非定义。(关于声明和定义,详见之前《浅谈指针》的文章系列)而真正的函数定义,都是包含在库中的。

侯捷老师c++11重点

作者:还有offer嘛 链接:https://www.nowcoder.com/discuss/962212?page=3 来源:牛客网     • 指针、引用、数组、内存 • 右值引用与完美转发 • 引用与指针区别 • C 和 C++ 的一些区别,比如 new、delete 和 malloc、free 的区别 • 虚机制:虚函数、虚函数表、纯虚函数 • 继承、

0040-Bytes-bytes源码阅读

环境 Time 2022-05-29 Rust 1.61.0 Bytes 1.1.0 前言 说明 参考: https://github.com/tokio-rs/bytes https://zhuanlan.zhihu.com/p/109977513 目标 之前阅读的部分,都是关于静态的字节,后面开始涉及到动态。其中有很多关于原子类型的操作,来实现无锁并发。 这里不深入,先简单理解

Chapter 3

资源管理 条款 13 以对象管理资源 ​ “以对象管理资源“”也被称为“资源取得时机便是初始化时机(RAII)”。 获得资源后立即放进管理对象内,即在构造函数中获取资源。 管理对象(managing object)运用析构函数确保资源被释放。 ​ 在C++11中,应该使用 shared_ptr 和 unique_ptr 来

Linux 内核对交换芯片上送的协议报文的处理

           1. 应用场景              对于数据报文,交换芯片完成硬件转发,即转发层面,无须cpu的参与。              对于协议报文,例如L2 的 EAPS环网检测,需要上送cpu,由应用层处理,即控制层面。           2. 内核接收报文处理            在交换芯

osg学习-3《绘制三维曲面》

 演示了创建曲面节点的函数 (1)首先设置面数据的顶点坐标,设置面数据在I和J方向的网格个数,以及网格间距,随便设置z和颜色。也可以通过读取外部数据的方式获取顶点坐标和网格上的属性值,根据需要的色标计算每个网格的rgb颜色值。 (2)每个网格一个图元,设置它的坐标索引,并设置颜色数组,通过

阅读智能指针

shared_ptr shared_ptr继承自_Ptr_base<_Ty>,是一个引用计数资源管理的类。 _Ptr_base是shared_ptr和weak_ptr的基类。 Ptr_base Ptr_base持有两个数据成员,element_type和_Ref_count_base。 对相同模板参数的shared_ptr可以访问,对一系列模板家族的_Ptr_base可以访问,对一系列模板参

c++ linux dump定位错误

1. 测试程序 dumpTest.cpp #include <string> int main(){ int *ptr = NULL; *ptr = 10; return 0; } 2. 编译生成执行程序 gcc -g dumpTest.cpp -o dumpTest   3. 设置环境 ulimit -c unlimited   echo "core.%e" > /proc/sys/kernel/core_pattern   4. 执行 ./du

现代C++实战(4)

函数对象 c++98中的函数对象:重载()运算符 struct Add { Add(int n): n_(n){} int operator()(x) const { return x + n_; } private: int n_; } Lambda表达式 auto add_2 = [](int x) {return x + 2;}; 变量捕获 本地变量按值捕获 & 按引用捕获 泛型Lamb

[c++]关于拷贝构造函数和析构函数执行次数的思考

前言 最近在学习C++的类如何构造,在W3Cschool上看到关于拷贝构造函数的一个例子,记录一下。 案例背景 这篇文章大致是构造了如下的一个Line类: class Line{ public: int getLength(void); Line(int len); // 简单构造函数 Line(const Line &obj

指针 再理解

本文写于 2019-12-05 23:37 有题如下:修改代码,使其用物种方法输出China main() { int i = 0; char str[6] = {'C', 'h', 'i', 'n', 'a', '\0'}, str1[6] , *ptr, *ptr1, *ptr2 , str2[5]; while (str[i] != '\0&

linux 内存映射

目录相关函数使用内存映射实现进程间通信注意事项: 内存映射(Memory-mapped I/O)是将磁盘文件的数据映射到内存,用户通过修改内存就能修改磁盘文件。 相关函数 头文件: #include <sys/mman.h> void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset);

C++11 smart pointer 之 weak_ptr(附源码链接)

std::weak_ptr weak_ptr源码链接 (与shared_ptr在同个.h文件) 定义于头文件 <memory> template< class T > class weak_ptr; (C++11 起) std::weak_ptr 是一种智能指针,它对被 std::shared_ptr 管理的对象存在非拥有性(“弱”)引用。在访问所引用的对象前必须先转换为 std::shared_p

用 Visual Studio 调试 Qt 程序时的变量可视化研究

目录运行环境背景说明Qt 类的封装用VS监视对象使用 natvis 文件效果参考文献 运行环境 IDE:Microsoft Visual Studio Community 2019, 16.11.15 Qt:5.12.5_msvc2017, 32bit OS:Windows 10 家庭版,21H2 背景说明 我们在使用 VS 开发 Qt 程序时,经常会遇到无法观察 Qt 类型变量值的问题。

C++ 智能指针

1.智能指针的作用和定义 智能指针的作用是管理指针所指向的内存的生命周期,能够管理(控制)该内存的共享和释放,避免用户在使用完该内存后忘记释放,造成内存泄漏。 智能指针是普通(生的,即未封装的)指针的封装,在提供普通指针的功能同时,管理指针所指向的内存空间,当智能指针的实例超出其作用

rust iter 2

use std::ptr; use std::fmt::{ Display, Formatter, Result }; pub struct Node { value: i32, next: *mut Node } impl Node { pub fn new(val: i32) -> Self { Node { value: val, next: ptr::null_mut(), }

stdshared_ptr 采坑记录

std::shared_ptr 采坑记录 class MyClass { public: MyClass(); ~MyClass(); int GetNumber(); private: }; MyClass::MyClass() { printf(__FUNCTION__); } MyClass::~MyClass() { printf(__FUNCTION__); } int MyClass::GetNumber() { printf(__FUNCTION__); return

uthash详解

库函数 //新增元素 HASH_ADD_INT(head, keyfield_name, item_ptr); HASH_ADD_STR(head, keyfield_name, item_ptr); HASH_ADD_PTR(head, keyfield_name, item_ptr); //查找元素 HASH_FIND_INT(head, key_ptr, item_ptr); HASH_FIND_STR(head, key_ptr, item_ptr); HASH_FIND_PTR(h

多进程计算质素

示例:primer.c #include <stdio.h>#include <stdlib.h>#include <pthread.h>#include <string.h> #define LEFT 30000000#define RIGHT 30000200#define THRNUM (RIGHT-LEFT+1) typedef struct thread_arg_st //自定义结构体{   int i;}targ_st; static void

C++ 中 shared_ptr weak_ptr

shared_ptr std::shared_ptr<int> sp1 = new int(); // shared count = 1, weak count = 0 std::shared_ptr<int> sp2(sp1); // shared count = 2, weak count = 0 std::shared_ptr<int> sp3 = sp2; // shared count = 3, weak count = 0