Sponsored Content
Full Discussion: Unclear pointer and array
Top Forums Programming Unclear pointer and array Post 302884179 by Don Cragun on Saturday 18th of January 2014 07:08:41 AM
Old 01-18-2014
The declarations:
Code:
    char *text;
    char *a;

allocate space on the stack for two pointers to characters. And the size of a is the size of a pointer (4 bytes in a 32-bit application; 8 bytes in a 64-bit application).

With these declarations, the initial value of these pointers is whatever random bytes happen to have been on the stack. When you copy data or read data into an area pointed to by an uninitialized pointer, you will get a memory fault, a bus error, or overwrite data at some random location depending on what random bytes on the stack happen to underly your pointers. If you malloc() space for arrays of characters and assign the pointers that malloc() returned to your pointers, then you won't be overwriting a random location in memory, but you would still have a problem because the sizeof(a) in:
Code:
       substring(start, end, text, a, sizeof(a)));

is the size of the pointer; not the number of bytes allocated by malloc() to the array pointed to by a.

The declarations:
Code:
    char text[100];
    char a[100];

allocate two arrays of 100 bytes each on your stack. And the size of a is 100 bytes.
 

9 More Discussions You Might Find Interesting

1. Programming

pointer

void main() { int a={1,2,3,4,5,6,7,8,9,10}; int *p=a; int *q=&a; cout<<q-p+1<<endl; } The output is 10, how? if we give cout<<q it will print the address, value won't print.... if we give cout<<p it will print the address, value won't print.... p has the base addr; q... (1 Reply)
Discussion started by: sarwan
1 Replies

2. UNIX for Dummies Questions & Answers

Storing pointer array in C

All .. I am having a pointer array . And trying to store the addess into that pointer array . please see below the problem i faced code: int cnt1; char *t_array; char *f_array; for(cnt1=0; cnt1<1000; cnt1++) { t_array =... (1 Reply)
Discussion started by: arunkumar_mca
1 Replies

3. Programming

pass a pointer-to-pointer, or return a pointer?

If one wants to get a start address of a array or a string or a block of memory via a function, there are at least two methods to achieve it: (1) one is to pass a pointer-to-pointer parameter, like: int my_malloc(int size, char **pmem) { *pmem=(char *)malloc(size); if(*pmem==NULL)... (11 Replies)
Discussion started by: aaronwong
11 Replies

4. Programming

C pointer/array duality confusion

Hi all, Can anyone provide help with getting the right syntax regarding array/pointers in C in the following code? Can't locate a specific example which clarifies this... Say I declare a typedef to an array of pointers to some type... /** * An array of ptrs to sections */ typedef... (4 Replies)
Discussion started by: gorga
4 Replies

5. Programming

help with char pointer array in C

i have an array like #define NUM 8 .... new_socket_fd = accept(socket_fd, (struct sockaddr *) &cli_addr, &client_length); char *items = {"one", "two", "three", "four", "five", "six", "seven", "eight"}; char *item_name_length = {"3", "3", "5", "4", "4", "3", "5", "5"}; ... (1 Reply)
Discussion started by: omega666
1 Replies

6. Programming

structure pointer array as function parameters

if i create an array of pointers to a structure "struct node" as: struct node *r; and create "n" number of "linked lists" and assign it to the various struct pointers r using some function with a return type as structure pointer as: r=multiplty(.......) /*some parameters*/ is... (2 Replies)
Discussion started by: mscoder
2 Replies

7. Shell Programming and Scripting

best practises for scripting + a few unclear points

Hi guys, Besides the points bellow, what would best practices for scripting be ? 1) set the PATH 2) unset the current environment (set -u ?) 3) (re)set the IFS to default value - space (IFS="" <- is this correct ?) 4) check the return code for each action inside the script (cd, rsync,... (1 Reply)
Discussion started by: da1
1 Replies

8. Programming

Character pointer to Character array

how to copy content of character pointer to character array in c programming.. char *num; char name=num; (1 Reply)
Discussion started by: zinat
1 Replies

9. Programming

Pointer for 2D array seems to be 3D in C

I am struggling with the pointer to 2D-array (cf: 2D array of pointers). Can anybody help me elaborate how the pointer x moves in the memory to access the individual of y, especially the high lighted lines? I have talked to one of the curators of the forum, but I am still not quite clear. Here... (1 Reply)
Discussion started by: yifangt
1 Replies
STACK(9)						   BSD Kernel Developer's Manual						  STACK(9)

NAME
STACK -- stack macros SYNOPSIS
#include <sys/param.h> type STACK_ALLOC(sp, size); type STACK_MAX(sp, size); type STACK_ALIGN(sp, bytes); type STACK_GROW(sp, size); type STACK_SHRINK(sp, size); DESCRIPTION
A stack is an area of memory with a fixed origin but with a variable size. A stack pointer points to the most recently referenced location on the stack. Initially, when the stack has a size of zero, the stack pointer points to the origin of the stack. When data items are added to the stack, the stack pointer moves away from the origin. The STACK_ALLOC() macro returns a pointer to allocated stack space of some size. Given the returned pointer sp and size, STACK_MAX() returns the maximum stack address of the allocated stack space. The STACK_ALIGN() macro can be used to align the stack pointer sp by the specified amount of bytes. Two basic operations are common to all stacks: a data item is added (``push'') to the location pointed by sp or a data item is removed (``pop'') from the stack. The stack pointer must be subsequently adjusted by the size of the data item. The STACK_GROW() and STACK_SHRINK() macros adjust the stack pointer sp by given size. A stack may grow either up or down. The described macros take this into account by using the __MACHINE_STACK_GROWS_UP preprocessor define. SEE ALSO
param(3), queue(3) BSD
April 8, 2011 BSD
All times are GMT -4. The time now is 05:39 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy