zoukankan      html  css  js  c++  java
  • 内存使用

    //
    //  main.c
    //  内存使用
    //
    //  Created by zhangxueming on 15/6/8.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    //内存操作函数
    //1.申请内存
    //2.判断内存是否申请成功
    //3.对申请到的内存初始化(可选)
    //4.使用内存
    //5.释放内存
    //6.将指向该内存的指针赋值为NULL
    
    //int main(int argc, const char * argv[]) {
    //    char *pstr = (char *)malloc(100*sizeof(char));
    //    if (!pstr) {
    //        return -1;
    //    }
    //    memset(pstr, 0, 100);
    //    scanf("%s", pstr);
    //    printf("%s
    ", pstr);
    //    free(pstr);
    //    pstr =NULL;
    //    return 0;
    //}
    
    //内存清空函数
    //void    *memset(void *mem, int c, size_t n);
    //int main(int argc,const char *argv[])
    //{
    //    //printf("size = %ld
    ", sizeof(void));
    //    
    ////    int a[10]={1,2,3,4,5};
    ////    memset(a, 0, 40);
    ////    for (int i=0; i<10; i++) {
    ////        printf("%d", a[i]);
    ////    }
    //    
    //    char str[100]="hello world";
    //    memset(str, 0, 100);
    //    for (int i=0; i<100; i++) {
    //        printf("%d", str[i]);
    //    }
    //    return 0;
    //}
    
    //
    //void    *calloc(size_t count, size_t size);
    //申请的内存空间大小 = count * size;
    
    //利用malloc memset 实现calloc
    
    void *mycalloc(size_t count, size_t size)
    {
        void *p= malloc(count*size);
        if (!p) {
            return NULL;
        }
        memset(p, 0, count*size);
        return p;
    }
    
    //int main(int argc,const char *argv[])
    //{
    //    int *pscore =mycalloc(10, sizeof(int));
    //    for(int i=0; i<10; i++)
    //    {
    //        //scanf("%d", &pscore[i]);
    //        scanf("%d", pscore+i);
    //    }
    //    for (int i=0; i<10; i++) {
    //        printf("%d ", *(pscore+i));
    //    }
    //    free(pscore);
    //    pscore = NULL ;
    //    return 0;
    //}
    
    //内存查找函数
    //memchr
    //void    *memchr(const void *dst, int c, size_t n);
    
    //int main(int argc,const char *argv[])
    //{
    //    char str[100]="hello world";
    //    
    //    printf("%s
    ", memchr(str, 'o', 100));
    //
    //    return 0;
    //}
    
    
    //修改内存大小
    //realloc
    //void    *realloc(void *, size_t);
    
    //int main(int argc,const char *argv[])
    //{
    //    char *pstr = (char *)malloc(50*sizeof(char));
    //
    //    printf("%p
    ", pstr);
    //    
    //    scanf("%s", pstr);
    //    
    //    pstr = realloc(pstr, 1000*sizeof(char));
    //    
    //    printf("%p
    ", pstr);
    //    
    //    printf("%s
    ", pstr);
    //
    //    return 0;
    //}
    
    //int main(int argc, const char *argv[])
    //{
    //    char *pstr=malloc(100*sizeof(char));
    //    if (!pstr) {
    //        return -1;
    //    }
    //    scanf("%s", pstr);
    //    printf("%s
    ", pstr);
    //    
    //    realloc(pstr, 0);//<==> free(pstr)
    //    //free(pstr);//同一块内存不能被释放两次
    //    pstr = NULL;
    //    
    //    
    //    return 0;
    //}
    
    //int main(int argc,const char *argv[])
    //{
    //    char *pstr = realloc(NULL, 100);//<==> malloc(100)
    //    if (!pstr) {
    //        return -1;
    //    }
    //    scanf("%s", pstr);
    //    printf("%s
    ", pstr);
    //    realloc(pstr, 0);
    //    pstr = NULL;
    //    return 0;
    //}
    
    #include <string.h>
    //内存比较函数
    //int     memcmp(const void *, const void *, size_t);
    
    //int main(int argc,const char *argv[])
    //{
    //    char str1[20]="helloworld";
    //    char str2[20]="helloaorld";
    //    //int a[5]={1,3,5};
    //    
    //    int ret = memcmp(str1, str2, 20);
    //    printf("ret = %d
    ", ret);
    //
    //    return 0;
    //}
    
    //内存拷贝函数
    //void    *memcpy(void *dst, const void *src, size_t n);
    //dst 与src 指针指向的内存空间不能有重叠的部分
    
    //int main(int argc,const char *argv[])
    //{
    //    char str1[100]="hello world";
    //    char str2[100]={};
    //    
    //    str1[19]='A';
    //    
    //    memcpy(str2, str1, 20);
    //    printf("str2 = %s
    ", str2);
    //    printf("str2[19]=%c
    ", str2[19]);
    //    return 0;
    //}
    
    //内存移动函数
    //void    *memmove(void *dst, const void *src, size_t n);
    //dst 与src 指向的内存空间可以重叠
    
    //int main(int argc,const char *argv[])
    //{
    //    char str[100]="hello world";
    //    
    //    memmove(str, &str[1], 11);
    //    printf("str = %s
    ", str);
    //    
    //    return 0;
    //}
    
    //strstr
    
    char *mystrstr(const char * src, const char *substr)
    {
        while (*src) {
            char *tempstr = (char *)src;
            char *tempsubstr = (char *)substr;
            while (*tempstr==*tempsubstr) {
                tempsubstr++;
                tempstr++;
                if (*tempsubstr=='') {
                    return (char *)src;
                }
            }
            src++;
        }
        return NULL;
    }
    
    //int main(int argc,const char *argv[])
    //{
    //    char *str1 = "hello worworld qianfeng";
    //    printf("%s
    ", mystrstr(str1, "world"));
    //    return 0;
    //}
    
    //memmem
    //void    *memmem(const void *mem, size_t size1, const void *submem, size_t size2)
    
    //int main(int argc, const char *argv[])
    //{
    //    char *str="helloworldqianfeng";
    //    
    //    printf("%s
    ",memmem(str, 18, "world", 5));
    //    return 0;
    //}
    
    
    //把数字字符串转换成整型
    //atoi
    //atof
    
    int main(int argc, const char *argv[])
    {
        printf("%d
    ", atoi("    123abc"));
        return 0;
    }
  • 相关阅读:
    四校联考【20171001】
    C语言基础知识
    页表和TLB
    python
    Cache组织方式
    On the Spectre and Meltdown Processor Security Vulnerabilities
    latex-组织文本
    深入理解计算机系统
    深入理解计算机系统-计算机系统漫游
    逻辑地址到物理地址的转换
  • 原文地址:https://www.cnblogs.com/0515offer/p/4560437.html
Copyright © 2011-2022 走看看