aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMattias Andrée <maandree@operamail.com>2015-10-17 23:48:36 +0200
committerMattias Andrée <maandree@operamail.com>2015-10-17 23:48:36 +0200
commit013df84b3c633f5dd990f7c9b4cd99f5c870ebcd (patch)
treebf579edd45156df5465831970f8121e6fd65957e
parenttypo (diff)
downloadslibc-013df84b3c633f5dd990f7c9b4cd99f5c870ebcd.tar.gz
slibc-013df84b3c633f5dd990f7c9b4cd99f5c870ebcd.tar.bz2
slibc-013df84b3c633f5dd990f7c9b4cd99f5c870ebcd.tar.xz
info: more on alloca
Signed-off-by: Mattias Andrée <maandree@operamail.com>
-rw-r--r--doc/info/chap/memory-allocation.texinfo19
1 files changed, 19 insertions, 0 deletions
diff --git a/doc/info/chap/memory-allocation.texinfo b/doc/info/chap/memory-allocation.texinfo
index a9d3c7e..5107d3a 100644
--- a/doc/info/chap/memory-allocation.texinfo
+++ b/doc/info/chap/memory-allocation.texinfo
@@ -305,6 +305,10 @@ tries to access memory that could not be allocated,
or, depending on the kernel's configuration, before
it returns.
+On typical kernels and kernel configurations,
+@code{alloca} and @code{malloc} will handle memory
+exhaustion identically.
+
Undefined behaviour may be invoked if @code{alloca}
is called within a function call. The behaviour
depends on the machine, the compiler, and
@@ -314,6 +318,21 @@ optimisations. You should avoid code similar to
strcpy(alloca((strlen(string) + 1) * sizeof(char)), string)
@end example
+@code{alloca} has its restricts --- limited lifetime,
+cannot be explicitly deallocated, not growable, and
+not shrinkable --- but it can also be advantageous
+because:
+@itemize
+@item
+Results in cleaner code because it is deallocated
+automatically.
+@item
+It does not waste any space on metainformation
+required for bookkeeping.
+@item
+Uses a faster memory allocation mechanism.
+@end itemize
+
@node Basic memory allocation