के साथ वस्तु को कॉपी मैं है निम्नलिखित कोड:डबल मुक्त या भ्रष्टाचार त्रुटि memcpy
#include <iostream>
#include <string>
#include <cstring>
struct test {
std::string name;
size_t id;
};
int main() {
test t;
t.name = "147.8.179.239";
t.id = 10;
char a[sizeof(t)] = "";
std::memcpy(a, &t, sizeof(t));
test b;
std::memcpy(&b, a, sizeof(t));
std::cout << b.name << " " << b.id << std::endl;
}
जब मैं यह संकलन और इसे चलाने, यह मेरे निम्न त्रुटि देता है:
147.8.179.239 10
*** Error in `./test': double free or corruption (fasttop): 0x0000000000bf9c20 ***
Aborted (core dumped)
यह बदल जाता है कोड बाहर परिणाम मुद्रित कर सकते हैं। लेकिन मैं इस त्रुटि को कैसे ठीक कर सकता हूं?
@ स्टैकप्टर वीएलए क्या है? – Johnnylin
परिवर्तनीय लंबाई सरणी। संकलन समय पर इसका आकार अज्ञात है, और सी ++ में अवैध है। – stackptr
@ जॉनीनीलिन परिवर्तनीय लंबाई सरणी। इसे मानक सी ++ में प्रतिबंधित है (हालांकि इसे कुछ कंपाइलर एक्सटेंशन द्वारा अनुमति दी गई है)। –