yeniden tahsis edilmiyor Bir projenin ortasındayım ve malloc()
ve realloc()
kullanmaya çalışıyorum. Ne zaman malloc olduğumu biliyorum, işe yarıyor ama realloc kullandığımda, ayrılmış bellek miktarını hiç değiştirmiyor. Ben her zaman bu realloc zaten bozuk bellek yeniden tahsis edecektir.Bellek
Bu şunlardır: Ben malloc kullanarak bu yapılar 7 yapmak istediğinizde I will,
struct student {
int age;
int numOfClasses;
int gender; //0 male; 1 female
} student;
:
#include <stdlib.h>
Ben bir yapı var burada
ben ne var Bu kod satırını kullanın:
student stud* = (structure*) malloc(7*sizeof(student));
Bu hat çalışır. Bu kod satırı yapının büyüklüğünü ve katları 7 ile alır. Kısacası, bu 7 yapıdan oluşan bir dizi yapmak için yeterli hafızaya sahip olacaktır. İşte
: Ben 8'e bunu değiştirmek istiyorum eğer A
önceki malloced bellek ve B
yeni malloced (veya realloced) bellek nerede
Şimdi, bu yapacağını Ben kodunda kaç: bildiğim kadarıyla
stud = (student*)realloc(stud, 8*sizeof(student));
, realloc ikinci parametrede değişkeni alır ve bellek bu miktarı mallocs. Ardından, işaretçiyi (veya önceki malloced) alır ve sadece malloced belleğe verilen işaretçiden olabildiğince fazla doldurur. Tabii ki, ikinci parametre önceki malloced boyuttan daha büyük olmalı ya da stud
sonunda bir miktar hafızayı kaybedecektir. Şimdi benim sorunum burası. Yukarıdaki satırı aradığımda hiçbir şey değişmez. Malloced dizi hala 7 uzunluğundadır. Ayrıca eminim ki, realloc için yeterli belleğim var.
Bunu doğru mu yapıyorum? Sorunum nerede olabilir?
Kötü dizinin hala 7 uzunluğunda olduğunu mu düşünüyorsun? –
Bu sizin sorununuz ile ilgili değil, ama bence yapınızın bir “enum” için mükemmel bir kullanımı var. – teppic