zoukankan      html  css  js  c++  java
  • C语言 整理错误合集

    C语言 整理错误合集


    1、VS2013的C4996错误

    原因:由于微软在VS2013中不建议再使用C的传统库函数scanf,strcpy,sprintf等,所以直接使用这些库函数会提示C4996错误

    #define _CRT_SECURE_NO_WARNINGS     //这个宏定义最好要放到.c文件的第一行
    #pragma warning(disable:4996)      //或者使用这个
    解决方案

    2、内存常见问题

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <math.h>
    #include <time.h>
    
    // 6、值传递与地址传递
    // 值传递形参不能改变实参的值
    // 地址传递形参可以改变实参的值
    //void fun(int* p)
    //{
    //    p = (int*)malloc(sizeof(int) * 10);
    //}
    // 解决1
    //void fun(int** p)
    //{
    //    *p = (int*)malloc(sizeof(int) * 10);
    //}
    // 解决2 返回值
    // int* fun()
    // {
    //     int* p = (int*)malloc(sizeof(int) * 10);
    //     return p;
    // }
    
    int main(void)
    {
        // 1、数组下标越界
        // char ch[11] = "hello world";
    
        // 2、堆空间越界
        // 释放会出现问题
        // char* p = (char*)malloc(sizeof(char) * 11);
        // strcpy(p, "hello world");
        // printf("%s
    ", p);
        // free(p);
    
        // 3、野指针
        // 0字节空间、释放会出现问题
        // int* p = (int*)malloc(0);
        // 无法根据类型开辟相应空间、存在使用内存溺出
        // int* p = (int*)malloc(10);
        // *p = 100;
        // printf("%p
    ", *p);
        // free(p);
    
        // 4、堆空间不允许多次释放
        // int* p = (int*)malloc(sizeof(int) * 10);
        // free(p);
        // 解决:p = NULL // 空指针允许多次释放
        // free(p);
    
    
        // 5、指针叠加、修改指针
        // int* p = (int*)malloc(sizeof(int) * 10);
        // 解决:int* temp = p
        // for (int i = 0; i < 10; i++)
        // {
        //     *p = i;
            // 指针叠加不断改变指针方向、释放会出错
            //     p++;
            // }
        // free(p);
    
        // 6、值传递与地址传递
        // int* p = NULL;
        // fun(p);
        // for (int i = 0; i < 10; i++)
        // {
        //     p[i] = i;
        // }
        // free(p);
        // 解决
        // int* p = NULL;
        // fun(&p);
        // for (int i = 0; i < 10; i++)
        // {
        //     p[i] = i;
        // }
        // free(p);
    
        return 0;
    }
    内存常见问题

  • 相关阅读:
    明确目标
    适应环境
    解决问题的方式
    超市收银系统设计
    功能开发流程
    JS代码和OC代码的相互调用
    app上架流程的整理
    手动创建单例
    Python 安装mysqldb
    Python UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/12371563.html
Copyright © 2011-2022 走看看