Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | jgk@panix.com (Joe keane) |
|---|---|
| Newsgroups | comp.std.c |
| Subject | Re: VLAs use less stack |
| Date | 2012-09-01 16:09 +0000 |
| Organization | Public Access Networks Corp. |
| Message-ID | <k1tc0j$mad$1@reader1.panix.com> (permalink) |
| References | <k1q5bu$49h$1@speranza.aioe.org> |
In article <k1q5bu$49h$1@speranza.aioe.org>,
jacob navia <jacob@jspamsink.org> wrote:
>int fn(size_t datasiz)
>{
> char databuf[datasiz<1000?datasiz:1];
> char *p;
> int result;
>
> if (datasiz >= 1000) {
> p = malloc(datasiz);
> if (p == NULL {/*error handler here */
> return EXIT_FAILURE;
> }
> }
> else p = & databuf[0];
> // Use p here
> if (datasiz>=1000) free(p);
> return result;
>}
>
>Here we have the best path: In MOST cases we will use a cheap stack
>allocation. In the few cases where the data size is exceptionally big
>we use the more costly heap allocation. We can handle an unbounded
>amount of data.
agreed
But now you don't need VLAs!
#define ZZ_STKSIZ 100
int fn(size_t datasiz)
{
char databuf[ZZ_STKSIZ];
char *p;
int needfreep;
int result;
if (datasiz <= ZZ_STKSIZ)
{
p = &databuf[0];
needfreep = 0;
}
else
{
p = malloc(datasiz);
if (p == NULL)
{
/* rollback */
return EXIT_FAILURE;
}
needfreep = 1;
}
/* use p */
if (needfreep)
free(p);
return result;
}
Back to comp.std.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
VLAs use less stack jacob navia <jacob@spamsink.net> - 2012-08-31 12:58 +0200
Re: VLAs use less stack Marc <marc.glisse@gmail.com> - 2012-08-31 14:10 +0000
Re: VLAs use less stack Marc <marc.glisse@gmail.com> - 2012-08-31 14:13 +0000
Re: VLAs use less stack jacob navia <jacob@spamsink.net> - 2012-08-31 18:09 +0200
Re: VLAs use less stack jacob navia <jacob@spamsink.net> - 2012-08-31 18:14 +0200
Re: VLAs use less stack John Nagle <nagle@animats.com> - 2012-09-01 12:24 -0700
Re: VLAs use less stack jacob navia <jacob@spamsink.net> - 2012-09-01 22:57 +0200
Re: VLAs use less stack jacob navia <jacob@spamsink.net> - 2012-09-01 22:59 +0200
Re: VLAs use less stack Keith Thompson <kst-u@mib.org> - 2012-08-31 11:42 -0700
Re: VLAs use less stack Marc <marc.glisse@gmail.com> - 2012-09-01 10:18 +0000
Re: VLAs use less stack Rui Maciel <rui.maciel@gmail.com> - 2012-09-01 19:18 +0100
Re: VLAs use less stack Marc <marc.glisse@gmail.com> - 2012-09-01 19:19 +0000
Re: VLAs use less stack jacob navia <jacob@spamsink.net> - 2012-09-01 23:01 +0200
Re: VLAs use less stack Keith Thompson <kst-u@mib.org> - 2012-09-01 11:36 -0700
Re: VLAs use less stack Marc <marc.glisse@gmail.com> - 2012-09-01 19:05 +0000
Re: VLAs use less stack jgk@panix.com (Joe keane) - 2012-09-02 16:56 +0000
Re: VLAs use less stack Keith Thompson <kst-u@mib.org> - 2012-09-02 14:22 -0700
Re: VLAs use less stack jgk@panix.com (Joe keane) - 2012-09-04 00:39 +0000
Re: VLAs use less stack Jens Gustedt <jens.gustedt@loria.fr> - 2012-09-04 10:28 +0200
Re: VLAs use less stack John Nagle <nagle@animats.com> - 2012-09-04 11:31 -0700
Re: VLAs use less stack jacob navia <jacob@spamsink.net> - 2012-09-04 17:02 +0200
Re: VLAs use less stack jacob navia <jacob@spamsink.net> - 2012-09-02 23:28 +0200
Re: VLAs use less stack Keith Thompson <kst-u@mib.org> - 2012-09-02 14:37 -0700
Re: VLAs use less stack John Nagle <nagle@animats.com> - 2012-09-02 15:45 -0700
Re: VLAs use less stack Hans-Bernhard Bröker <HBBroeker@t-online.de> - 2012-09-04 00:03 +0200
Re: VLAs use less stack jgk@panix.com (Joe keane) - 2012-09-01 16:09 +0000
Re: VLAs use less stack Keith Thompson <kst-u@mib.org> - 2012-09-01 11:45 -0700
Re: VLAs use less stack jacob navia <jacob@spamsink.net> - 2012-09-01 23:05 +0200
csiph-web