de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 AbhishekSaha
AbhishekSaha
Question

Bagaimana cara membebaskan memori dari larik char di C

Saya membuat larik char seperti ini:

char arr[3] = "bo";

Bagaimana cara membebaskan memori yang terkait dengan larik yang saya beri nama "arr"?

23 2014-02-02T17:23:23+00:00 3
Dániel Nagy
Dániel Nagy
Pertanyaan edit 26 Maret 2016 в 1:36
Pemrograman
c
Pertanyaan ini memiliki :value jawaban dalam bahasa Inggris, untuk membacanya masuk ke akun Anda.
Solution / Answer
 rullof
rullof
2 Februari 2014 в 5:36
2014-02-02T17:36:27+00:00
Lebih
Sumber
Sunting
#23561795

Variabel lokal secara otomatis dibebaskan ketika fungsi berakhir, Anda tidak perlu membebaskannya sendiri. Anda hanya membebaskan memori yang dialokasikan secara dinamis (misalnya menggunakan malloc) karena dialokasikan di heap:

char *arr = malloc(3 * sizeof(char));
strcpy(arr, "bo");
// ...
free(arr);

Lebih lanjut tentang alokasi memori dinamis: http://en.wikipedia.org/wiki/C_dynamic_memory_allocation

 rullof
rullof
Jawaban edit 2 Februari 2014 в 5:46
58
0
Kerrek SB
Kerrek SB
2 Februari 2014 в 5:24
2014-02-02T17:24:10+00:00
Lebih
Sumber
Sunting
#23561793

Anda tidak membebaskan apa pun sama sekali. Karena Anda tidak pernah memperoleh sumber daya apa pun secara dinamis, maka tidak ada yang harus Anda bebaskan, atau bahkan tidak diizinkan untuk membebaskannya.

(Ini sama seperti ketika Anda mengatakan int n = 10;: Tidak ada sumber daya dinamis yang terlibat yang harus Anda kelola secara manual).

12
0
David Heffernan
David Heffernan
2 Februari 2014 в 5:25
2014-02-02T17:25:50+00:00
Lebih
Sumber
Sunting
#23561794

Memori yang diasosiasikan dengan arr dibebaskan secara otomatis ketika arr keluar dari ruang lingkup. Ini adalah variabel lokal, atau dialokasikan secara statis, tetapi tidak dialokasikan secara dinamis.

Aturan sederhana yang harus Anda ikuti adalah bahwa Anda hanya boleh memanggil free() pada pointer yang dikembalikan oleh panggilan ke malloc, calloc atau realloc.

6
0
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
UbiBot UK
Terdaftar 15 jam yang lalu
2
Галина Утяшова
Terdaftar 1 hari yang lalu
3
Asilbek Qadamboyev
Terdaftar 4 hari yang lalu
4
Akshit Mehta
Terdaftar 1 minggu yang lalu
5
me you
Terdaftar 1 minggu yang lalu
ID
JA
KO
RU
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi