Daha büyük bir programda bellek sızıntısı yaşıyorum ve bunun bunun nedeni olduğuna inanıyorum.char pointer, struct array bellek sızıntısıdır
#include <stdlib.h>
#include <Windows.h>
typedef struct _struct{
char* name;
} str;
int main() {
system("PAUSE");
str* Character = (str*)malloc(sizeof(str) * 20000);
for(int i = 0; i < 20000; i++){
Character[i].name = (char*)malloc(20000); // Assign memory.
}
for(int i = 0; i < 20000; i++){
free(Character[i].name); // Free memory.
}
free(Character);
system("PAUSE");
}
İlk durakta bellek: ~ 500K.
İkinci durakta bellek: ~ 1.7M.
Test için VS2012'yi kullanma. Herhangi bir fikir?
Sizin kodunuz yanlış görünüyor. Bellek kullanımını nasıl ölçüyorsunuz? Yığın yöneticinizin, 'ücretsiz' çağrılarınızı takip ederek yığınını sıkıştırmamış olması mümkün mü? Bu durumda, işleminize fazladan bir bellek atanır, ancak programınız tarafından kullanılmazdı, bu nedenle diğer kodların tahsis edilebilmesi mümkün olurdu. – simonc
Malloc kullandığınızda, malloc'dan geri dönüş almamalıysanız (Character == NULL) – hazzelnuttie
belleğin gerçekten tahsis edilip edilmediğini kontrol ettiğinizden emin olun. Bu C ve herhangi bir şeye * boşluk atayabilirsiniz. –