zoukankan      html  css  js  c++  java
  • 堆区函数

    070.堆函数

    一个进程或者说一个程序.可能有多个线程.
    单线程
    每个线程都有自己专属的栈(stack).
    栈的最大尺寸是固定的,在OD的右下角,我们都看到过,超过那个范围就会引起栈溢出.
    堆上的内存必须手工释放(C/C++),有的编程语言比如Java、Net不需要手动管理堆内存,语言本身有GC(垃圾回收机制)则另谈.以后我们再来讨论这个问题.

    函数内部的局部变量(auto以及参数)一旦,函数运行完毕,则会自动从栈上释放.

    int f_abc(int p_v1,int p_v2){
    // C语言的形参是从右到左入栈的.  p_v2先入栈,p_v1 后入栈.
    }

    malloc ();
    calloc (); 第一个参数指定单位的数量. 指定一个单位的大小./
    realloc()


    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>


    void main() {

     int * lp = (int *)malloc(10 * sizeof(int));
     free(lp); 

     // malloc只负责申请内存,但是不负责初始化内存,单独需要使用memset这个函数.

     lp = (int *)calloc(10, sizeof(int));
     //calloc这个函数,它申请的内存,会自动初始化为0.

     free(lp);
     system("pause");
    }


    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>


    void main() {

     char * lp_1 = (char *)calloc(10, sizeof(char));


     char * lp_temp = (char*)realloc(lp_1, 13);
     //realloc可以修改申请的内存大小,不仅可以变大,还可以变小.
     if (lp_1 == lp_temp) {
      printf("内存地址一样,未发生变化! ");
     }
     else {
      printf("内存地址不一样,发生变化! ");
     }
     //realloc追加的内存是不会进行初始化的.

     free(lp_temp);

     system("pause");

  • 相关阅读:
    680. Valid Palindrome II【easy】
    125. Valid Palindrome【easy】
    459. Repeated Substring Pattern【easy】
    2. Trailing Zeros【easy】
    142. O(1) Check Power of 2【easy】
    181. Flip Bits【easy】
    183.Wood Cut【hard】
    61. Search for a Range【medium】
    关闭微软对win10的推送
    让未激活的win8.1不再跳出提示激活的窗口
  • 原文地址:https://www.cnblogs.com/xiaodaxiaonao/p/8053658.html
Copyright © 2011-2022 走看看