이 코드는 함수 내에서 정적 목록에 새 객체를 추가합니다. 목록은 함수를 참조하여 전달됩니다.정적 목록의 변수 수명
목록에있는 새 개체의 수명이 어땠습니까?
코드 샘플 :
#include <list>
#include <string>
#include <iostream>
using namespace std;
struct MyStruct
{
int x;
string str;
};
void addStructToList(list<MyStruct> &myStructlist, int _x, string _str)
{
MyStruct newStruct;
newStruct.x = _x;
newStruct.str = _str;
myStructlist.push_back(newStruct);
}
void main()
{
list<MyStruct> myStructlist;
addStructToList(myStructlist, 111, "aaa");
addStructToList(myStructlist, 222, "bbb");
addStructToList(myStructlist, 333, "ccc");
for (auto it = myStructlist.begin(); it != myStructlist.end(); it++)
{
cout << it->x << " " << it->str << endl;
}
system("pause");
}
출력 :
111 aaa
222 bbb
333 ccc
Press any key to continue . . .
질문 :
메모리 사용의 관점에서이 코드는 안전합니까?
"newStruct"평생이란 무엇입니까? addStructToList() 또는 Main()?
코드에 정적 목록이 표시되지 않습니다. – Oktalist
추천하는 읽기 : [ "네임 스페이스 표준을 사용하는 것이 왜 나쁜 습관이라고 생각합니까?"(http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice) – Deduplicator