杂记之内存分配实例
来源:互联网 发布:淘宝 黑搜索2016 编辑:程序博客网 时间:2024/05/20 18:16
动态内存分配的一个常见用途就是为那些长度在运行时才知的数组分配内存空间。
sort.c
/*内存分配实例*//*读取一列整数、升序排序和打印一列整型值*/#include<stdio.h>#include<stdlib.h>int compare_integers(void const *a, void const *b){register int const *pa=a; register int const *pb=b;return *pa > *pb ? 1: *pa < *pb ? -1:0;}int main(){int *array;int n_values;//构成int array[n_values]型int i;/*观察共有多少个值,即读取n_values的值*/printf("How many values are there ?");if(1!=scanf("%d",&n_values) || n_values <= 0){printf("Illegal number of values.\n");exit(EXIT_FAILURE);}/*分配内存,用于这些值*/array=malloc(n_values*sizeof(int));if(array==NULL){printf("Can't get memory for that many values.\n");exit(EXIT_FAILURE);}/*读取这些值。*/for(i=0; i<n_values; i+=1){printf("?");if(scanf("%d",array+i)!=1){printf("Error reading value #%d\n",i);free(array); exit(EXIT_FAILURE);}}/*对这些值排序*/qsort(array, n_values, sizeof(int), compare_integers);/*打印这些值*/for(i=0; i<n_values; i+=1){printf("%d\n",array[i]);}free(array);return EXIT_SUCCESS;/*释放这些内存并退出*/}
strdup.c
/*用动态分配内存制作一个字符串的一份拷贝。注意:调用程序应该负责检查这块内存
**是否分配成功,这样做允许调用程序以任何她所希望的方式对错误做出反应。
*/
#include <stdlib.h>#include <stdio.h>#include <string.h>char* strdup(char const *string){char* new_string;new_string=malloc(strlen(string)+1);if(new_string!=NULL)strcpy(new_string,string);return new_string;}int main(){char* str1="Hello world";char* newString;newString=strdup(str1);printf("%s\n",newString);free(newString);return 0;}
函数首先试图获得足够的内存来存储这个拷贝,内存的容量应该比字符串的长度多一个字节,
以便存储字符串结尾的NUL字节。如果内存没有成功分配,字符串就会被复制到这块新内存。
最后,函数返回一个指向这块内存的指针。注意,如果由于某些原因导致内存复制失败,new_string
的值为NULL。在这种情况下,函数,将返回一个NULL指针。
- 杂记之内存分配实例
- C++之内存分配
- C++之内存分配
- java之内存分配
- C++之内存分配
- LDD之内存分配
- CPP之内存分配
- 编程之内存分配问题
- java基础之内存分配
- linux realloc之内存分配
- 内存管理之内存分配
- JVM之内存区域分配
- jvm之内存分配策略
- C++内存管理之内存分配详解
- C++并不难—之内存分配
- C++之内存分配
- C/C++语言之内存分配
- eclipse 性能调优之内存分配
- Android 4.1编译问题集合
- 在C#winform中运行js代码,需要自己转换提供所需要的JS
- Loadrunner监控Tomcat
- python studying ---- memo and difference compared to c++
- 在Javascript中怎样判断用户按下的是回车键?
- 杂记之内存分配实例
- 大数求幂运算
- 基于RFID无线射频的设备管理系统---矩阵键盘驱动(按键码)
- servlet3.1规范翻译:第3章 请求
- pthread最简单的多线程编程-002
- 解决eclipse和myeclipse下不能自动提示代码的问题
- Linux内核中的定时
- CSS3下的147个颜色名称实例页面
- 读书笔记: processor architecture<computer system a programmer perspective第二章>