c++의 static 변수같은게 c에는 없나요?
글쓴이: cjy1126 / 작성시간: 수, 2005/02/23 - 9:36오전
유해 프로그램을 나타내는 code, name 을 멤버로 가지는 구조체가 있습니다.
이 구조체를 이용해서 유해 프로그램 리스트르 만들었습니다.
agent에 이 리스트를 전송하려고 하는데, 몇개의 리스트를 전할지 리스트의 개수를 보내고 데이터를 전달하려고 합니다.
listCount라는 변수를 따로 잡아야 하나요?
struct process { int code; char name[100]; int listCount; }
이렇게하자니 listCount 변수는 1개만 필요한데 메모리가 낭비되고, 구조체와 따로해서 잡자니 현재 변수가 너무 많아서요.
가능하면 묶어서 다닐려고 생각하는데, c에서는 별수없나요?
코드가 커지니까 기능하나 붙이는게 너무 힘드네요 ㅜ.ㅜ
Forums:
static 멤버는 그냥 전역변수인데요.
static 멤버변수는 객체에 묶이는게 아니라 그냥 전역변수일 뿐일텐데요.
뭘 묶는다는건지 모르겠군요.
c++에서 static 멤버로 선언해서
process::listCount = 3;
이렇게 쓰나, c에서 process.c에 전역변수로 선언한 후 헤더에 extern선언하여
process_listCount = 3;
이렇게 이름을 붙여 쓰나.. 별 차이는 없을 듯.. 뭐 느낌은 다르겠지만요.
님ㅎ 즐~
질문이 무슨말인지 이해하기 힘들군요.
질문이 무슨말인지 이해하기 힘들군요.
----------------------------------------------------------------------------
제가 글을 잘못썼나보네요. ㅠ.ㅠ
이렇게하면 int code;는 객체의 수만큼 메모리에 할당되고, static int count는 객체의 수에 관계없이 한번 할당되는걸로 압니다.
class처럼 count 변수를 공유할 방법이 없나해서요.
필요한것들끼리 묶어서 관리하고 싶어서요.
프로그램이 커질수록, 함수와 변수 작명... 관리가 힘드네요 ㅠ.ㅠ
hanzo69님의 답변처럼 그냥 static 변수를 쓰면 되지 않나요?
hanzo69님의 답변처럼 그냥 static 변수를 쓰면 되지 않나요?
그리고 코딩한 사람이 그런용도로 static변수를 쓰면 되는거겠죠.
꼭 struct와 묶어야할 이유는 없어보이는데요.
단지 기분상 이란 문제는 있을수있겠지만....
형식에 너무 얽매이지 않는게 좋다고 보여집니다.
Re: 제가 글을 잘못썼나보네요. ㅠ.ㅠ
변수가 많더라도, 구조체 밖으로 빼야합니다.
그보다도 전,
를 이해할 수가 없네요. 처리해야할 코드번호와 이름이 들어있는 객체에 '전체 갯수'를 왜 넣어야하나요?
count가 A클래스 안에 들어가는 이유가 궁금합니다. count 라는 변수는 class A의 집합을 가지고 있는 객체에서 가지고 있어야할 정보 아닌가요?
저같으면....
제가 잘 이해를 못하는 건지 모르겠는데요...
이렇게 할거 같은데요....
첨으로 글을 올려보는거니까 이상해도 용서를 :oops:
Re: 제가 글을 잘못썼나보네요. ㅠ.ㅠ
먼저 그러한 구조라면 count 의 맴버는 구조체의 맴버라고 보기 힘들겠군요.. 따라서 구조체외부로 빼는게더 바람직한구조라고 보아지며.
궂이내부에 두고싶을경우 동일메모리를 공유할것이므로 포인터를쓰면 되겠지요..
그리고 님이 첫글에서 우려하신 클레쓰의경우 메모리가 하나로 공통으로 쓰이나 구조체인경우 구조체갯수만큼 메모리가 낭비된다고 하셨는데.
클레쓰의경우도 장담은못하나 ㅋㅋ 객체생성당시에 어차피특정위치를 기억할 메모리가 할당될것으로보입니다.
따라서 이러나저러나 결국 마찬가지가된다는소리지요..
----------------------------------------------------------------------------
Re: 제가 글을 잘못썼나보네요. ㅠ.ㅠ
그렇지 않습니다. 클래스 개체는 static 멤버를 기억(?)할 필요가 없고 따라서
이에 필요한 메모리가 할당되지도 않습니다.
일반적인 "블록 내부의 자동 객체"(흔히 말하는 지역 변수)는 클래스 할
일반적인 "블록 내부의 자동 객체"(흔히 말하는 지역 변수)는 클래스 할당과 소멸에 따라 생사를 함께 하겠지만 "블록 내부의 정적 객체"(static)는 "블록 밖의 정적 객체"(흔히 말하는 전역 변수)와 같은 수명 모델을 같습니다.
차이점은 블록에 따라서 그 객체가 다른 코드와 데이터에게 보이게 되는 "범위"(scope)만이 차이가 날 뿐이죠.
- 죠커's blog / HanIRC:#CN
댓글 달기