zoukankan      html  css  js  c++  java
  • 野指针和内存操作实例

    1.#include <stdio.h>
    #include <malloc.h>

    void f(int* p, int size)
    {
        int i = 0;
        
        for(i=0; i<size; i++)
        {
            printf("%d ", p[i]);
        }
        
        free(p);
    }

    int main()
    {
        int* p = (int*)malloc(5 * sizeof(int));
        int i = 0;
        
        f(p, 5);
        
        for(i=0; i<5; i++)
        {
            p[i] = i; // OOPS!
        }
           
        return 0;
    }

    2.#include <stdio.h>
    #include <malloc.h>

    void f(int* p, int size)
    {
        int i = 0;
        
        for(i=0; i<size; i++)
        {
            p[i] = i;
            printf("%d ", p[i]);
        }
        
        free(p);
    }

    int main()
    {
        int* p = (int*)malloc(5 * sizeof(int));
        
        f(p, 5);
        
        free(p); // OOPS!
           
        return 0;
    }

    3.#include <stdio.h>
    #include <malloc.h>

    void f(unsigned int size)
    {
        int* p = (int*)malloc(size*sizeof(int));
        int i = 0;
        
        if( size % 2 != 0 )
        {
            return; // OOPS!
        }
        
        for(i=0; i<size; i++)
        {
            p[i] = i;
            printf("%d ", p[i]);
        }
        
        free(p);
    }

    int main()
    {
        f(9);
        f(10);
           
        return 0;
    }
    4.#include <stdio.h>

    void f(int a[10])
    {
        int i = 0;
        
        for(i=0; i<10; i++)
        {
            a[i] = i; // OOPS!
            printf("%d ", a[i]);
        }
    }

    int main()
    {
        int a[5];
        
        f(a);
           
        return 0;
    }


  • 相关阅读:
    WebAPI 资料
    TransactionScope事务类的使用
    Go入门笔记34-Go 使用Ioctl
    解决XShell XFTP传输Go可执行文件导致出错问题
    Go入门笔记33-Go 交叉编译
    博客园添加横向菜单
    C# 正则替换、Json格式化等
    Ubuntu批量修改文件后缀
    Linux免密登录
    Go入门笔记32-继承
  • 原文地址:https://www.cnblogs.com/wxb20/p/6163260.html
Copyright © 2011-2022 走看看