ICode9

精准搜索请尝试: 精确搜索
  • 指针相减--仅限于同一块内存空间2021-09-12 16:01:12

    #include <stdio.h> int main(void) { int b[6] = {3,-1,-4,0,5}; printf("b[5]与b[3]相差%d个单元\n",&b[5] - &*(b+3)); return 0; } 输出结果: b[5]与b[3]相差2个单元 -------------------------------- Process exited after 0.01435 seconds with return

  • C语言中动态内存分配的本质是什么?2021-09-10 15:02:24

    摘要:C语言中比较重要的就是指针,它可以用来链表操作,谈到链表,很多时候为此分配内存采用动态分配而不是静态分配。 本文分享自华为云社区《【云驻共创】C语言中动态内存分配的本质》,作者: G-washington。 C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。尽管C语

  • 内存泄露和内存溢出2021-09-09 13:31:23

    内存溢出和内存泄露的区别是什么?内存溢出怎么解决?内存溢出是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。内存泄露 是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽

  • 056.指针-指针所占用的内存空间2021-09-04 14:33:26

    #include <iostream> using namespace std; int main() { //指针所占用的内存空间大小 int a = 10; int* p = &a; //32位操作系统,指针占用4个字节空间大小,不管什么数据类型 //64位操作系统,指针占用8个字节空间大小; cout << "sizeof(p)=" << sizeof(p) <<

  • StringBuilder与String互转2021-09-04 12:01:08

    原文链接:https://www.cnblogs.com/huameitang/p/10528646.html   StringBuilder类是一个可变的字符序列。 StringBuilder() 构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。 StringBuilder(CharSequence seq) 构造一个字符串生成器,它包含与

  • Python 赋值、浅拷贝、深拷贝之间区别2021-08-24 20:34:31

    赋值 不会开辟新的内存空间,是对原对象值的引用 当原对象值,改变后,赋值的变量也会随之改变 浅拷贝 只会拷贝最外层的对象,会开辟新的内存空间,和原对象是互相独立的 如果这个对象有嵌套对象的话,浅拷贝只会拷贝外层对象,对于里面的对象是对其值的引用 接下来我们对嵌套

  • vector底层实现和扩容机制2021-08-11 16:04:02

    底层实现: STL 众多容器中,vector 是最常用的容器之一,其底层所采用的数据结构非常简单,就只是一段连续的线性内存空间。 通过分析 vector 容器的源代码不难发现,它就是使用 3 个迭代器(可以理解成指针)来表示的: //_Alloc 表示内存分配器,此参数几乎不需要我们关心 template <class _Ty,

  • [C++] C++之resize和reserve2021-08-09 15:29:41

    改变容器大小,resize 增大或者缩小容器 array不支持resize 如果当前容器大小大于所要求的大小,容器后部的元素会被删除如果当前容器大小小于所要求的大小,会将新元素添加到容器后部 vector<int> vec(10, 1);//容器中含有10个1,size为10 vec.resize(15);//将5个值为0的元素添加到v

  • 内存管理理论2021-08-07 16:34:52

    实模式内存管理的概念         当一个程序运行的时候需要把程序所需要的物理内存空间一次性全部准备好(空间不足和内存安全问题)          1.如果程序一启动就把程序所有需要的内存空间全部分配掉那么内存空间可能会被撑爆          2.各个程序可以访问到其他程序的

  • JVM的堆2021-08-03 12:03:24

    JVM年轻代、老年代、永久代 https://blog.csdn.net/sted_zxz/article/details/72476673 垃圾回收算法 1、复制算法 复制算法的核心就是,将原有的内存空间一分为二,每次只用其中的一块,在垃圾回收时,将正在使用的对象复制到另一个内存空间中,然后将该内存空间清空,交换两个内存的角色,完

  • JAVA内存空间2021-08-02 20:05:26

    JAVA内存:方法区内存,堆内存,栈内存 方法区内存:代码片段,静态变量 堆内存:实例变量(前面修饰符没有static) 栈内存:局部变量(前面修饰符由static) 局部变量运行阶段在栈上分配内存。 详解: 堆内存和方法区内存各有一个,一个线程一个栈内存。方法调用时,该方法所需要的内存空间在栈内存中分

  • 内存使用与分段2021-07-30 11:31:44

    内存使用与分段 内存使用方式:将程序放到内存中,PC指向开始地址 重定位 程序中的地址往往是指相对地址,需要结合基地址才能找到程序真实位置 重定位时机: 编译时 载入时 运行时 编译时重定位 在编译过程中已经确认哪块内存空闲,并且之后该内存块也不会出现大的变化,适合硬系统 特点:只

  • C++ new/delete探究2021-07-25 16:32:31

            我们知道C++中申请内存使用new, 释放内存使用delete.  char* p = new char[100]; // do something if (ch) { delete p; p = nullptr; } 这里有一个问题: new的时候指定了大小,为什么delete时不需要? 针对这个问题,我们需要了解new做了哪些事情. 正常情

  • Redis数据类型的底层结构2021-07-23 16:34:14

    1、String Redis构建的简单动态字符串(Simple Dynamic String),简称SDS 优点: 传统字符串(C字符串) SDS 1. 获取字符串长度的复杂度为O(N) 获取字符串长度的复杂度为O(1) 2. API 是不安全的,可能会造成缓冲区溢出 API 是安全的,不会造成缓冲区溢出 3. 修改字符串长度N次必然需要执

  • Java虚拟机的内存空间有几种!2021-07-22 11:04:56

    Java虚拟机的内存空间有几种? (1)问题分析: JVM(虚拟机)的内存划分 不同的数据使用的是哪一块内存空间 (2)核心答案讲解: Java虚拟机有那几块内存空间: 1)栈内存:方法运行时所进入的内存,里面还会存储程序的局部变量 2)堆空间:new出来的数据都会进入堆内存 3)方法区:字节码文件如加

  • 140、在成员函数中调用delete this会出现什么问题?对象还可以使用吗?2021-07-20 22:03:18

    1、在类对象的内存空间中,只有数据成员和虚函数表指针,并不包含代码内容,类的成员函数单独放 在代码段中。在调用成员函数时,隐含传递一个this指针,让成员函数知道当前是哪个对象在调用它。 当调用delete this时,类对象的内存空间被释放。在delete this之后进行的其他任何函数调用,只要不

  • python 中 ctypes 的使用尝试2021-07-19 22:00:33

    最近在看Python的性能优化方面的文章,突然想起ctypes这个模块,对于这个模块一直不是很理解,不过再次看完相关资料有了些新的观点。   ctypes 这个模块个人观点就是提供一个Python类型与C类型数据转换接口或者说是规则的一个模块。ctypes定义的数据类型其实并不是一种数据类型,而更应

  • JAVA中不要用e.printStackTrace()2021-07-15 15:33:23

      转自:https://my.oschina.net/sxgkwei/blog/825700 e.printStackTrace() 会导致锁死?这仅仅是打印啊,怎么可能?! 先别惊呼不可能,且听我细细道来。 先看截图1: 注意右下角区域,红框部分。这块内存是什么呢?非堆!那么,左边是代码缓存区内存,右边红框就是字符串池,常量,基本类型数据的内存区

  • 81、构造函数一般不定义为虚函数的原因2021-07-10 12:34:49

    (1)创建一个对象时需要确定对象的类型,而虚函数是在运行时动态确定其类型的。在构造一个对象时,由于对象还未创建成功,编译器无法知道对象的实际类型 (2)虚函数的调用需要虚函数表指针vptr,而该指针存放在对象的内存空间中,若构造函数声明为虚 函数,那么由于对象还未创建,还没有内存空间,更没

  • javascript关于变量提升的问题2021-07-04 22:31:46

    js在声明一个变量时(var foo= 1)会分两步走。 第一步是var foo,(这一步是在为这个变量开辟一处内存空间并命名) 第二步是foo= 1,(这一步则是为开辟好并命了名的内存空间赋值) 但这两步并不是同时进行的,var foo这一步是在编译阶段进行,而foo= 1则是在执行阶段进行。简单来说,就是va

  • 序列解包与链式赋值2021-07-03 23:35:21

    1.什么是序列解包? 将可迭代对象里面的值一个个解包,存储到一系列变量中 In [3]: lis = [1,2,3]   # 列表解包 a,b,c=lis print(a,b,c) 1 2 3 In [11]: tupl = (1,2,3)  # 元组解包 a,b,c=tupl print(a,b,c) 1 2 3 可以看到如果是字典,则只会取key,字典应该是以key为主 In [6]: dic

  • 字符串和指针新领悟2021-06-30 18:34:40

    ”用双括号括起来的内容被视为指向该字符串存储位置的指针。“ ——《C Primer Plus(第六版)中文版》P322 这句话怎么理解呢?只看主谓宾——用双括号括起来的内容视为指针。”用双括号括起来的内容“不就是字符串吗,所以有”字符串视为指针“。是这样吗?我们来看下面这个例子:

  • 补充:垃圾回收机制2021-06-26 11:04:32

    垃圾回收机制 垃圾回收机制(简称GC) python 解释器自带的一种机制,专门用来回收不可用的变量值所占用的内存空间 为什么要用垃圾回收机制 程序运行过程中会申请大量的内存空间,而对一些无用的内存空间如果你不及时处理,导致内存使用殆尽,导致内存溢出,造成程序崩溃 堆区与栈区 定义变量时

  • 操作系统实战45讲-32021-06-21 22:34:09

    Hello OS 的引导流程    PC 机 BIOS 固件是固化在 PC 机主板上的 ROM 芯片中的,掉电也能保存,PC 机上电后的第一条指令就是 BIOS 固件中的,它负责检测和初始化 CPU、内存及主板平台,然后加载引导设备(大概率是硬盘)中的第一个扇区数据,到 0x7c00 地址开始的内存空间,再接着跳转到 0x7c

  • Java_数据类型2021-06-20 14:33:17

    概述 Java属于强类型语言,每一种数据必须明确所属的数据类型; 不同数据类型,分配的内存空间也不同,所有他们的数据大小也不一样。 分类 两大类 基本数据类型 和 引用数据类型

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有