From: "Amit Dang" <amit_dang@intersolutions.stpn.soft.net>
To: krzaq <krzakers@gmail.com>
Cc: linux-c-programming@vger.kernel.org
Subject: Re: Issue "address of local variable returned"
Date: Fri, 27 May 2005 09:24:56 +0530 [thread overview]
Message-ID: <011d01c5626f$e7bdba70$9736a8c0@ispl091> (raw)
In-Reply-To: 2ab8d39a05052610175e3d7018@mail.gmail.com
Hi Karol,
Thanks a lot for your reply. I am aware that memory for local variable
is allocated on stack and so its address should not be returned.
My problem is compiler warning. For two different structs, compiler warning
change.
If following struct is used, compiler flashes a warning
struct s {
char op[24];
int j;
};
but if int is moved before char no warning is flashed by the compiler.
struct s {
int j;
char op[24];
};
For details, refer text of original mail attached below.
Regards,
Amit Dang
----- Original Message -----
From: "krzaq" <krzakers@gmail.com>
To: "Amit Dang" <amit_dang@intersolutions.stpn.soft.net>
Sent: Thursday, May 26, 2005 10:47 PM
Subject: Re: Issue "address of local variable returned"
> On 5/25/05, Amit Dang <amit_dang@intersolutions.stpn.soft.net> wrote:
> > Hi All,
> > I am facing following issue
> > (g++ compiler "g++ (GCC) 3.2.3 20030502 (Red Hat Linux 3.2.3-20)" is
being
> > used for compilation.)
> >
> > Following piece of code gives warning: "address of local variable `op'
> > returned"
> > #################################
> > #include<iostream>
> > using namespace std;
> >
> > struct s {
> > char op[24];
> > int j;
> > };
> >
> > char* fun()
> > {
> > struct s op;
> > strcpy(op.op, "898898898\0");
> > return op.op;
> ^^----------------- char* "op" is valid in the visibility context
> of struct "op", which is the body of function fun().
> Struct "op" is created on stack and gets "deleted" after returning
> from function fun().
> Try something like this:
>
> struct s* op;
> op = (struct s*) malloc(sizeof(struct s));
> strcpy(op->op, "898898898\0");
> return op->op;
>
> > }
> >
> > int main()
> > {
> > cout << fun() << endl;
> > return 0;
> > }
> > #################################
> > But when the structure is change no warning is issued
> > Following is the new structure
> > #################################
> > struct s {
> > int j;
> > char op[24];
> > };
> > #################################
> >
> > Obviously I know that "op.op" should not be returned.
> >
> > g++ compiler "g++ (GCC) 3.2.3 20030502 (Red Hat Linux 3.2.3-20)" is
being
> > used for compilation.
> >
> > Thanks in advance,
> > Amit Dang
> >
> > -
> > To unsubscribe from this list: send the line "unsubscribe
linux-c-programming" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
> >
>
>
> --
> Regards
> Karol Krzak
next prev parent reply other threads:[~2005-05-27 3:54 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-05-25 7:27 Issue "address of local variable returned" Amit Dang
[not found] ` <2ab8d39a05052610175e3d7018@mail.gmail.com>
2005-05-27 3:54 ` Amit Dang [this message]
2005-05-27 16:09 ` Glynn Clements
-- strict thread matches above, loose matches on Subject: below --
2005-05-25 7:17 Amit Dang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='011d01c5626f$e7bdba70$9736a8c0@ispl091' \
--to=amit_dang@intersolutions.stpn.soft.net \
--cc=krzakers@gmail.com \
--cc=linux-c-programming@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).