Dynamic Memory Management
Compile time पर size या lifetime तय न हो तो dynamic storage चाहिए।
Dynamic Memory Management क्या है?
Compile time पर size या lifetime तय न हो तो dynamic storage चाहिए।
Runtime-sized array allocate और सुरक्षित release करें।
महत्वपूर्ण बातें
- Pointer किसी जीवित compatible object को point करे या null हो।
- हर owned allocation को ठीक एक बार release करें।
- Ownership और const interfaces स्पष्ट रखें।
C और C++ code examples
main.c
#include <stdio.h>
#include <stdlib.h>
int main(void) {
size_t count = 5;
int *values = calloc(count, sizeof *values);
if (!values) return 1;
for (size_t i = 0; i < count; ++i) values[i] = (int)(i * i);
printf("last=%d\n", values[count - 1]);
free(values);
return 0;
}
last=16
C++
main.cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> values(5);
for (std::size_t i = 0; i < values.size(); ++i) values[i] = static_cast<int>(i * i);
std::cout << "last=" << values.back() << '\n';
}
last=16
C और C++ की तुलना
C malloc/calloc को free से pair करके failure जाँचता है; std::vector memory own और automatically release करता है।
C
Ownership और cleanup programmer द्वारा लागू conventions हैं।
C++
Containers और RAII ownership को object lifetime से जोड़ते हैं।
अभ्यास
दोनों versions चलाकर बदलें और language guarantees की तुलना करें।
- Null और allocation failure paths test करें।
- AddressSanitizer और UndefinedBehaviorSanitizer चलाएँ।
- हर pointer का ownership लिखें।