मुझे एक बड़े कार्यक्रम में मेमोरी लीक हो रही है और मेरा मानना है कि यह इसका कारण है।चार सूचक संरचना स्ट्रक्चर सरणी मेमोरी लीक
#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");
}
पहले विराम पर स्मृति: ~ 500K।
दूसरी रोक पर स्मृति: ~ 1.7 एम।
परीक्षण के लिए वीएस2012 का उपयोग करना। कोई विचार?
आपका कोड सही दिखता है। आप स्मृति उपयोग को कैसे माप रहे हैं? क्या यह संभव है कि आपके ढेर प्रबंधक ने आपकी कॉल के बाद 'फ्री' पर अपनी ढेर को संपीड़ित नहीं किया है? इस मामले में, अतिरिक्त प्रक्रिया को आपकी प्रक्रिया में असाइन किया जाएगा लेकिन आपके प्रोग्राम द्वारा उपयोग में नहीं किया जाएगा, इसलिए वास्तव में आवंटित करने के लिए अन्य कोड के लिए उपलब्ध होगा। – simonc
जब आप मॉलोक का उपयोग करते हैं, तो कृपया यह सुनिश्चित करना सुनिश्चित करें कि स्मृति वास्तव में आवंटित की गई है (कैरेक्टर == न्यूल) – hazzelnuttie
आपको मॉलोक से रिटर्न कास्टिंग नहीं करना चाहिए। यह सी है और आप किसी भी चीज़ को शून्य * असाइन कर सकते हैं। –