간단한 질문이 2개가 있는데요..

oneclubs의 이미지

#1 첫번째 질문은..
소켓에 내용이 잔뜩 들어있습니다.
이상황에서

서버가 첫 메시지를 확인하는데 약속된 프로토콜이 아닙니다. 그래서 소켓을 닫습니다.
그리고 다른 사용자가 접속해서 그 소켓을 열어준다면
버퍼에 그 찌꺼기가 남아있나요? 아니면 비워지나요

#2 두번째 질문은.. 이렇습니다.

함수 A()
{
   char *temp = new char[20];
   return temp;
}
 
함수 B()
{
   while(1)  // 무한루프
   {
      char *str = 함수A();
 
   }
}

위와 같은 상황입니다.
함수 A는 호출되면 힙영역에 20바이트 메모리를 할당해서 그 주소값을 리턴해줍니다.
함수 B는 무한루프를 돌고있는 상황이구요

이상황에서 while루프가 1번 끝난시점에서 함수 A가 잡아놓은 힙영역은 free가 알아서 되나요?
아니면 직접 delete로 free시켜줘야하는건가요?

2가지 문제다 별거 아닌거라고 생각했었는데 막상 작업을 하다보니 이거 미치겠네요 ㅠ
내공의 부족함이 절실히 느껴집니다 엉엉

mg2000의 이미지

1. 다른 사용자가 동일한 소켓에는 접근 못할텐데요.

accept로 사용자의 연결을 받는다면, 열리는 내부 포트가 다른데요.

2. free되지 않습니다.

while 문이 끝나면서, 프로세스 자체가 종료되면, OS가 해제를 해 주겠지만,

단순히 loop를 빠져나왔다고 해제되지는 않습니다.

위의 예문처럼 돌리면, 얼마 못가 메모리 부족 에러가 뜰듯...

visualplus의 이미지

1번은 소켓을 닫고 다시 생성한경우라면 초기화가 될테고,
커넥션만 닫은 경우라면 소켓에 쓰레기값이 있지 않나요..?

2번은 윗분말씀대로구요..

tinywolf의 이미지

1번. closesocket했다면 아마도 깨끗할텐데요.
한번 테스트를 해보면 어떤가요?
클라이언트에서 1,2,3,4로 계속 보내고, 서버는 한 4까지 확인하다가 닫고 다시 연결해보세요. 5부터 들어있는지..

2번. delete만 넣으면 문제가 없을 것같네요.
while(1) // 무한루프
{
char *str = 함수A();
...
delete[] str;
}

ㅡ_ㅡ;

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.