스택오버플로우에 대한 질문입니다.질문 내용이 맞을려나???

이소희의 이미지

함수내 변수 선언을 하다 말고 값들이 뒤죽박죽 되는 현상 ㅡㅡ;
돼어야 하는데 안되는 현상;;; 처음 경험해보네요

간단한 예를 들면
아래에서 처럼 A라는 함수가
함수 SendText라는 함수를 호출하여 전송을 하는 모양의 구조로 만들었습니다.

그런데. *****
SendText를 (가)에서 처럼 For문에서 호출을 하면 SendText의 값들이 오버플로우 되는 현상이 보입니다.
함수 SendText로 들어가서 차례로 디버깅을 해보면,
int a=0; 정상적으로 초기화 됩니다.
int b=0; 정상적으로 초기화 됩니다.
int c=0; 이부분을 지나는 순간, 변수 a,b,data_tmp등 모든 값들이 이상한 값들로 채워집니다.

그런데..
SendText함수의 내용을 for문에 그대로 넣어서 돌리면 아무런 문제가 생기지 않습니다.

이거, 왜그런가요???

컴파일러는 vs2003을 사용하였는데, 스택 오버플로우 나는건가요?
정확한 원인이 뭔지 아시는분 설명좀 해주세요.

void A(char * data, int data_len)
{
	int n_total=0;
	int n_curnt_piece=0;

	// 일정한 자료 처리.
	for(int i = 0; i <n_total; i++) //  
	{
		SendText(data,data_len) //<<= (가)
	}
}

void SendText(char * data, int data_len)
{
	int a=0;
	int b=0;
	int c=0;
char  data_tmp[32]={0,}


	
	send(socket,data,len,0);
}
[/code]
익명 사용자의 이미지

증세로는 스택이 깨진것 같은데요.

제시한 정보로는 제3자로서 어떻게 판단하기 어렵습니다.
- 개발환경 : 운영체제, 개발도구등
- 모델 : 멀티쓰레드/싱글쓰레드
- 코드 : 글로벌 변수가 크고,...., 많다?
등등을 고려해 보십시요.

alwaysN00b의 이미지

위 소스로 SendText 가 한번이라도 호출이 되나요??

언제나 시작

only2sea의 이미지

일단 위분 말씀대로 for의 조건에 따르면 SendText가 한번도 호출이 안되겠군요.

게다가 한가지 더 추가하자면 Optimization Level이 있어서 사용하지 않는 변수로 처리 되었기 때문일지도 모르겠네요.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.