cari
  • Log masuk
  • Daftar
Penetapan semula kata laluan berjaya

Ikuti proiects vou berminat dengan andi aet terbaru mengenai mereka

C pengurusan ingatan

Koleksi 205
Baca 91673
masa kemas kini 2016-09-11

Bab ini akan menerangkan pengurusan memori dinamik dalam C. Bahasa C menyediakan beberapa fungsi untuk peruntukan dan pengurusan memori. Fungsi ini boleh didapati dalam fail pengepala <stdlib.h>.

< td >1
Nombor siriFungsi dan perihalan
序号函数和描述
1void *calloc(int num, int size);
该函数分配一个带有 num 个元素的数组,每个元素的大小为 size 字节。
2void free(void *address);
该函数释放 address 所指向的h内存块。
3void *malloc(int num);
该函数分配一个 num 字节的数组,并把它们进行初始化。
4void *realloc(void *address, int newsize);
该函数重新分配内存,把内存扩展到 newsize
void *calloc(int num, int size);
Fungsi ini memperuntukkan tatasusunan dengan

num

elemen, setiap elemen Saiz ialah

saiz

bait.
2

void free(void *address); .

3

void *malloc(int num); Tatasusunan bait dan mulakannya.
4

void *realloc(void *address, int newsize); untuk

memberitakan

.

Peruntukkan memori secara dinamik

Apabila pengaturcaraan, jika anda mengetahui saiz tatasusunan terlebih dahulu, maka apabila mentakrifkan tatasusunan Ia agak mudah. Sebagai contoh, tatasusunan untuk menyimpan nama orang, ia boleh memuatkan sehingga 100 aksara, jadi anda boleh menentukan tatasusunan seperti ini:

char name[100];

Walau bagaimanapun, jika anda tidak mengetahui terlebih dahulu panjang teks yang diperlukan untuk disimpan, contohnya anda ingin menyimpan huraian terperinci topik yang berkaitan. Di sini, kita perlu menentukan penunjuk yang menunjuk kepada aksara dengan saiz memori yang tidak ditentukan, dan kemudian memperuntukkan memori mengikut permintaan, seperti yang ditunjukkan di bawah:

#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){   char name[100];   char *description;

   strcpy(name, "Zara Ali");   /* 动态分配内存 */
   description = malloc( 200 * sizeof(char) );   if( description == NULL )   {
      fprintf(stderr, "Error - unable to allocate required memory\n");   }   else   {
      strcpy( description, "Zara ali a DPS student in class 10th");   }
   printf("Name = %s\n", name );
   printf("Description: %s\n", description );}
Apabila kod di atas disusun dan dilaksanakan, Ia akan menghasilkan keputusan berikut:
Name = Zara AliDescription: Zara ali a DPS student in class 10th

Atur cara di atas juga boleh ditulis menggunakan

calloc(), cuma gantikan malloc dengan calloc, seperti yang ditunjukkan di bawah:

calloc(200, sizeof(char));

Apabila memperuntukkan memori secara dinamik , anda mempunyai kawalan penuh dan boleh melepasi nilai dalam sebarang saiz. Tatasusunan dengan saiz yang telah ditetapkan tidak boleh diubah saiznya setelah ditentukan.

Ubah saiz memori dan lepaskan memori

Apabila atur cara keluar, sistem pengendalian secara automatik akan mengeluarkan semua memori yang diperuntukkan kepada atur cara, bagaimanapun, anda disyorkan untuk memanggilnya apabila anda melakukannya tidak memerlukan memori. Fungsi
free()<🎜> untuk melepaskan memori. <🎜><🎜>Sebagai alternatif, anda boleh menambah atau mengurangkan saiz blok memori yang diperuntukkan dengan memanggil fungsi <🎜>realloc()<🎜>. Mari lihat contoh di atas sekali lagi menggunakan fungsi realloc() dan free(): <🎜>
#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){   char name[100];   char *description;

   strcpy(name, "Zara Ali");   /* 动态分配内存 */
   description = malloc( 30 * sizeof(char) );   if( description == NULL )   {
      fprintf(stderr, "Error - unable to allocate required memory\n");   }   else   {
      strcpy( description, "Zara ali a DPS student.");   }   /* 假设您想要存储更大的描述信息 */
   description = realloc( description, 100 * sizeof(char) );   if( description == NULL )   {
      fprintf(stderr, "Error - unable to allocate required memory\n");   }   else   {
      strcat( description, "She is in class 10th");   }
   
   printf("Name = %s\n", name );
   printf("Description: %s\n", description );   /* 使用 free() 函数释放内存 */
   free(description);}
<🎜>Apabila kod di atas disusun dan dilaksanakan, ia menghasilkan keputusan berikut: <🎜>
Name = Zara AliDescription: Zara ali a DPS student.She is in class 10th
<🎜>Anda boleh Jika anda cuba tanpa memperuntukkan semula memori tambahan, fungsi strcat() akan menjana ralat kerana memori tidak mencukupi untuk menyimpan penerangan. <🎜><🎜>
Alat AI Hot
Undress AI Tool
Undress AI Tool

Gambar buka pakaian secara percuma

AI Clothes Remover
AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undresser.AI Undress
Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

Stock Market GPT
Stock Market GPT

Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak

Alat popular
Notepad++7.3.1
Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac
SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)