C Programming Tutorial
C Program Tutorial
Selected Reading
- C - Discussion
- C - Useful Resources
- C - Quick Guide
- C - Input & Output
- C - Typedef
- C - Bit Fields
- C - Unions
- C - Structures
- C - Strings
- C - Pointers
- C - Arrays
- C - Scope Rules
- C - Functions
- C - Loops
- C - Decision Making
- C - Operators
- C - Storage Classes
- C - Constants
- C - Variables
- C - Data Types
- C - Basic Syntax
- C - Program Structure
- C - Environment Setup
- C - Overview
- C - Home
C Program Tutorial
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
C. 记忆管理
C - Memory Management
本章解释了C的动态记忆管理。 C方案拟订语言为记忆分配和管理规定了若干职能。 这些职能见<stdpb.h>。 头盔档案。
Sr.No. | Function & Description |
---|---|
1 | 避免* 回顾(int num, int small); 这一职能分配一系列num 每一尺寸的单位为size。 |
2 | 这项职能释放了一个由地址标明的记忆组。 |
3 | 这项职能分配一系列的num,并使它们不成为初始。 |
4 | 这项职能将记忆重新定位至newsize。 |
Allocating Memory Dynamically
虽然方案拟定工作如果你知道一个阵列的规模,那是容易的,你可以把它界定为一个阵列。 例如,为了储存任何人的名字,可以最多100个,这样你就可以界定如下内容:
char name[100];
但现在,让我们考虑这样一种情况,即你对你需要储存的文本长度没有想法,例如,你想详细描述一个议题。 在这里,我们需要界定一个特征的点,而不必确定需要多少记忆,此后,根据要求,我们可以按以下例子来分配记忆——
#include <stdio.h> #include <stdpb.h> #include <string.h> int main() { char name[100]; char *description; strcpy(name, "Zara Ap"); /* allocate memory dynamically */ description = malloc( 200 * sizeof(char) ); if( description == NULL ) { fprintf(stderr, "Error - unable to allocate required memory "); } else { strcpy( description, "Zara ap a DPS student in class 10th"); } printf("Name = %s ", name ); printf("Description: %s ", description ); }
如果上述法典得到汇编和执行,则会产生以下结果。
Name = Zara Ap Description: Zara ap a DPS student in class 10th
也可使用etoc(>);书写。 仅需要用下列电线取代小型电线:
calloc(200, sizeof(char));
因此,你完全掌握了控制权,在分配记忆时,你可以传递任何规模价值,而不同的是,一旦确定规模,你就无法改变。
Resizing and Releasing Memory
贵方案出台时,运行系统自动释放了贵方案所分配的所有记忆,但作为良好做法,如果你不再需要记忆,那么你就应该通过叫自由(<>)号的功能来释放这一记忆。
或者,你可以通过打电话到realloc()来增加或减少所分配记忆块的规模。 让我们再次检查上述方案,并利用真正和免费的职能——
#include <stdio.h> #include <stdpb.h> #include <string.h> int main() { char name[100]; char *description; strcpy(name, "Zara Ap"); /* allocate memory dynamically */ description = malloc( 30 * sizeof(char) ); if( description == NULL ) { fprintf(stderr, "Error - unable to allocate required memory "); } else { strcpy( description, "Zara ap a DPS student."); } /* suppose you want to store bigger description */ description = realloc( description, 100 * sizeof(char) ); if( description == NULL ) { fprintf(stderr, "Error - unable to allocate required memory "); } else { strcat( description, "She is in class 10th"); } printf("Name = %s ", name ); printf("Description: %s ", description ); /* release memory using free() function */ free(description); }
如果上述法典得到汇编和执行,则会产生以下结果。
Name = Zara Ap Description: Zara ap a DPS student.She is in class 10th
你可以尝试上述例子,而不重新分配额外记忆,而且由于描述中缺乏可用记忆,剧团的职能将产生错误。
Advertisements