关于C内存管理、C内存的问题

发布于 数码 2024-06-24
11个回答
  1. 匿名用户2024-01-29

    事实上,这是没有办法做到的。 只要想在函数内部动态请求内存,在函数外部使用,就必然会有这样的矛盾。

    在返回之前使用 delete 就是在使用指针之前释放指针,这当然是不允许的。 如果退货后使用,使用后必须手动删除,否则会出现内存泄漏。

    如果是我,我的解决方案是在函数外动态请求内存,应用后传递给反字符串函数,返回使用,然后让主函数释放请求的内存。 即 ReversString 的原型声明为:

    void reversstring(const char * str, char *return)

    个人意见。

  2. 匿名用户2024-01-28

    用完后,删除,当然,在返回后。

  3. 匿名用户2024-01-27

    如果有语句 aaa = reversstring( ..)

    然后当你完成后:删除 aaa 就可以开始了。

  4. 匿名用户2024-01-26

    C C++ 编译的程序占用的内存分为以下几个部分:

    1. Stack — 由编译器自动赋值和释放,存储函数的参数值和局部变量的值。

    等。 它的行为类似于数据结构中的堆栈。

    2.堆区(HEAP)——一般由程序员指派发布,如果程序员不发布,程序可能会结束。

    由 OS** 提供。 请注意,它与数据结构中的堆不是一回事,它像链表一样分布,呵呵。

    3. 全局面积(静态面积)(静态)- 将全局变量和静态变量的存储放在一起。

    发起的全局变量和静态变量位于同一区域,未初始化的全局变量和未初始化的静态变量。

    变量位于另一个相邻区域。 - 程序结束后有一个系统版本。

    4. 文本常量区域 - 常量字符串放置在此处。 程序结束后,系统会释放。

    5. 程序区 - 函数体的二进制文件。

    所以你说的 1 是不正确的。

    2 文本常量区域和**区域是独立的,**区域存储编译的文本常量区域并存储字符串常量。

    例如,char *p="123455";那么这个“12345”就放在文本常量区域,这个区域是不能修改的,p指向的内容是不能修改的。

    3malloc 应用程序和新应用程序位于同一位置,称为堆区域,也称为可用存储区域。

    4 马洛克等

    5.解释被构造的变量,如果不需要地址,编译器会对其进行优化,并在变量出现的地方将其替换为常量,如const a=3;

    后跟 b=a+b; 编译器直接处理到 .

    b=3+b;

  5. 匿名用户2024-01-25

    1.你是对的,在程序开始运行时分配内存,在程序结束时释放内存。

    2.文本常量区域和程序区域通常是只读存储器。

    应用程序在堆上,由程序员分配和释放,如果程序员不释放它,操作系统将在程序结束时收回它。

    和 new 都在堆上请求内存。

    由编译器决定常量是否分配内存。

  6. 匿名用户2024-01-24

    分区管理。

    C C++ 编译的程序占用的内存分为以下几个部分:

    1)堆栈:由编译器自动赋值和释放,存储函数的参数值、局部变量的值等。 它像数据结构中的堆栈一样运行,地址从高到低延伸。

    2)堆:一般由程序员分配和释放,程序分配的内存在程序执行过程中动态应用,地址从低延伸到高,这与堆栈相反。如果程序员不发布,程序可能会以 os** 结束。

    请注意,它与数据结构中的堆不是一回事,它的分配方式类似于链表。

    3)静态区域:全局变量和静态变量的存储放在一起,初始化的全局变量和静态变量在一个区域,未初始化的全局变量和未初始化的静态变量在另一个相邻区域。- 程序结束后有一个系统版本。

    4. 文本常量区域 - 常量字符串放置在此处。 程序结束后,系统会释放。 (5)程序区:存放函数体的二进制文件。

  7. 匿名用户2024-01-23

    1.所有C语言在编码时都不会打开内存,只有在编译后才会生成可执行程序,并在可执行程序中给出内存打开方法。

    当程序运行时,真正的内存被打开。 程序被加载到内存中并开始运行。

    一个C程序加载到内存中后,在内存的进程空间中有一个**区域、一个全局数据区域、一个堆区域和一个堆栈区域。 **区域存储**编译执行指令; 全局数据区存储全局变量和静态变量; 堆栈将局部变量和返回地址存储在函数内部,并且仅在调用函数时请求这部分内存。 堆是自由请求内存的区域。 你需要使用 malloc 和其他内存来分配自己的内存,这部分内存需要自己释放。

    至 int i; 这样的句子,在C语言中,既是一个声明,也是一个定义,所以这样的语句已经分配了内存,而不是等待赋值的时间。

    如果你不明白,你可以问。

  8. 匿名用户2024-01-22

    例如,在程序中定义了一个 int i

    当这个程序运行到 int i 时,操作系统被要求为我们的程序分配内存空间。

    不赋值也会打开内存空间,不信可以输出,全局变量为0,局部变量为负大随机数。

  9. 匿名用户2024-01-21

    **只有在运行时才会被加载到内存中,并且开始对内存进行操作,如果不运行,它只是文本文件中的一种字体。 int i 已经打开了内存,已经有了一个地址来存储变量 i,但是这个地址的内容不确定,可以打印 i,也可以取 i 的内存地址。

  10. 匿名用户2024-01-20

    在编译时,int 会被转换为内存清理指令,运行时会根据编译程序中的内存清理指令打开内存。

  11. 匿名用户2024-01-19

    你怎么能不跑就开。 定义后,打开,无需等待分配。

相关回答
6个回答2024-06-24

首先,硬盘的使用要合理分区,C盘通常用于系统文件使用,称为系统盘,一般用20到25G来安装目前W7以上的系统就足够了,有了系统之后,就要看你经常用什么软件了,也就是 你的电脑的用途,如果你只做一些文字软件,硬盘中存储的临时文件或临时文件的数量一时半会儿不明显,除非你不安装保护软件,否则它已经注入了自动访问病毒。 >>>More

9个回答2024-06-24

应该是系统的虚拟内存设置在C盘中,设置多少就可以减少多少。 还有一些受保护的系统文件,需要取消选中这些文件才能隐藏受保护的系统文件才能显示。 可以设置虚拟内存到其他分区,方法是在我的电脑上右键---属性---性能设置---高级---虚拟内存设置,系统版本略有不同。

2个回答2024-06-24

printf("请输入 k 的值:");

scanf("%d",k);这句话应该写成scanf("%d",&k);K 正面"&"如果你丢失了它,你肯定会报告一个错误。 >>>More

18个回答2024-06-24

假设 scanf("%f%e",&a,&y);它应该是 scanf("%f%e",&x,&y); >>>More

14个回答2024-06-24

int a=3,b=;

第一 IFIF(a>b) a=b; c=a; >>>More