KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have memory corruption in this code: #include <string> #include <iostream> #include <vector> #include <initializer_list> int main() { std::vector<std::initializer_list<std::string>> lists = { { {"text1"}, {"text2"}, {"text3"} }, { {"text4"}, {"text5"} } }; int i = 0; std::cout << "lists.size() = " << lists.size() << std::endl; for ( auto& list: lists ) { std::cout << "lists[" << i << "].size() = " << lists[i].size() << std::endl; int j = 0; for ( auto& string: list ) { std::cout << "lists[" << i << "][" << j << "] = "<< string << std::endl; j++; } i++; } } Sample output: lists.size() = 2 lists[0].size() = 3 lists[0][0] = text10�j ����text2H�j ����text3`�j ����text4����text5��������q The problem is in std::initializer_list . Changing std::initializer_list to std::vector solves the problem. The question is why memory corruption takes place with std::initializer_list ?
Tags (comma-separated)
Save Edits
Cancel