Visit Our UNIX and Linux User Community


malloc function


 
Thread Tools Search this Thread
Top Forums Programming malloc function
# 1  
Old 09-03-2002
malloc function

Hello
This is a simple program i carried out in my machine
i dont know how it is working
#include<alloc.h>
#include<stdio.h>
mian()
{
int *p,j;
p= (int*)malloc(1);
for(j=1;j<=580;j++)
{
*p=j;
++p;
}

p=p-580;
for(j=1;j<=580;j++)
{
printf("%d",*p);
}
}

Linux 7.0
gcc compiler


when i mentioned 1 byte in malloc function how it stores 580 integers ?
it is printing from 1 to 580 numbers.
but when i specified as 581 the core gets dumped for same
malloc(1) function
what is reason behind that
how it stores 580 integers in one single byte
why it has not send an message (memory insufficeint)

please explain
# 2  
Old 09-03-2002
Re: malloc function

Quote:
Originally posted by rajashekaran
Hello
when i mentioned 1 byte in malloc function how it stores 580 integers ?
You are not storing 580 integers in one byte. You are walking across memory by advancing the pointer by 1 with each iteration. I am surprised that the program doesn't blow up in a more random fashion.

Come to think of it, you are allocating one byte of memory and the integer data type should take between two and four bytes of memory (depending on system). My FreeBSD machine reports 4 bytes for an integer datatype.

You really should be allocating the proper amount of memory with:

Code:
p= (int*)malloc(sizeof(int)*580);

# 3  
Old 09-03-2002
What exactly is the purpose of this program? What's it supposed to do? It looks like you step through memory setting each spot to a number between 1 and 580.. then you go back and read each memory spot..

Maybe there's an easier way than this whole script... especially if the only purpose is to print the numbers from 1 to 580...
# 4  
Old 09-05-2002
This is a bit dangerous, your pointer goes throu the memory and does the doggy things. If you want to do it safely use realloc function it will do same thing in safe way
It will go some thing like that: *p=(*int)realloc(p, (j)*sizeof(int)), and put it in the loop. With that U can use pointer more safely, u can even make it dynamic.

Hope it will help
# 5  
Old 09-09-2002
ur reply to me

/*You are not storing 580 integers in one byte. You are walking across memory by advancing the pointer by 1 with each iteration. I am surprised that the program doesn't blow up in a more random fashion.

Come to think of it, you are allocating one byte of memory and the integer data type should take between two and four bytes of memory (depending on system). My FreeBSD machine reports 4 bytes for an integer datatype.

You really should be allocating the proper amount of memory with:


code:--------------------------------------------------------------------------------
p= (int*)malloc(sizeof(int)*580);
--------------------------------------------------------------------------------*/

/*my reply*/

since by mentioning a integer pointer and storing the integers
by incrementing the pointer value
then what is the purpose of malloc?
u can decalre it as
in t *p;
several integers can be stored by incrementing the value of p,
hence what is the diffrence between this declaration and
malloc function.
this is an basic question according to my knowledge.
please answer this.
# 6  
Old 09-09-2002
That whol fun(ck) with pionters.
When you declare t *p than you just create pointer of type t, but it is pointing to nothing. When you malloc, you make it point to some certain space in RAM. More You have to malloc certain amount of ram, that why you use sizeof(int), that let's you malloc enough space to acomodate int.
# 7  
Old 09-30-2002
Linux 7.0?

When did that release happend?
I'm running 2.4.19 Smilie
anyway..
*p0ff*

Previous Thread | Next Thread
Test Your Knowledge in Computers #140
Difficulty: Easy
Unix and the C programming language were both developed at AT&T.
True or False?

10 More Discussions You Might Find Interesting

1. Programming

Malloc function returning NULL

Hi All, I am using malloc function for allocating dynamic memory. When I am using below code on Linux server its working fine, but When I am trying the same code on HP UNIX server its returning NULL. below is a fragment of code in which it is giving problem. tmp = (format_tree... (4 Replies)
Discussion started by: Taher Saifuddin
4 Replies

2. UNIX for Dummies Questions & Answers

Help with malloc()

Good day! I'm a newbie in C. I'm trying to get an unlimited input from the user using malloc then printing the inputs after the user presses enter. My code works, but there's a warning that I don't know how to fix. Please help me. Thank you. Here's my code: #include <stdio.h> #include... (6 Replies)
Discussion started by: eracav
6 Replies

3. Programming

malloc vs new speed

Which one is faster among malloc and new? My understanding is that since new also has to call constructors after allocating memory it must be slower than malloc. Am I correct? (1 Reply)
Discussion started by: rupeshkp728
1 Replies

4. Programming

Regarding the maximum memory allocated by malloc() function on HP-UX B11.11

In a 'C' program,when I am trying to allocate memory with the help of malloc () function, it is allocating the memory up to a certain limit for e.g. in my case, it is 670 MB (approx). malloc() returns NULL if I allocate more than this amount of memory.When I tried to allocate memory in chunks of... (1 Reply)
Discussion started by: vipinsachan
1 Replies

5. UNIX for Advanced & Expert Users

Malloc Implementation in C

Hey Guys Some of my friends have got together and we are trying to write a basic kernel similar to Linux. I am trying to implement the malloc function in C and I am using a doubly linked list as the primary data structure. I need to allocate memory for this link list (duh...) and I don't feel... (2 Replies)
Discussion started by: rbansal2
2 Replies

6. Programming

Malloc implementation in C

Hey Guys I am trying to implement the malloc function for my OS class and I am having a little trouble with it. I would be really grateful if I could get some hints on this problem. So I am using a doubly-linked list as my data structure and I have to allocate memory for it (duh...). The... (1 Reply)
Discussion started by: Gambit_b
1 Replies

7. Programming

malloc()

Some one please explain me what is Dynamic memory allocation and the use of malloc() function.How do we allocate memory dynamically and also the other way? (3 Replies)
Discussion started by: rash123
3 Replies

8. Programming

When to use Malloc?

Hi! I hope this is the correct forum to post the question even if I'm a newbie... I am a C-newbie (and really on the edge to be a C-addict ;) ) and have a question. When should I use malloc? To state it differently, when should I NOT use malloc? For instance, if I have an array of... (5 Replies)
Discussion started by: Tonje
5 Replies

9. Programming

malloc

hello sir since by mentioning a integer pointer and storing the integers by incrementing the pointer value then what is the purpose of malloc? u can decalre it as in t *p; several integers can be stored by incrementing the value of p, hence what is the diffrence between this... (2 Replies)
Discussion started by: rajashekaran
2 Replies

10. Programming

a problem about malloc()

1 . Thanks everyone who read the post. 2 . the programe is that : #include <stdio.h> #include <string.h> void do_it(char *p) { p = (char *) malloc(100); (void )strcpy(p,"1234"); } int main(void) { char *p; do_it(p); (void )printf("p = %s \n",p); (1 Reply)
Discussion started by: chenhao_no1
1 Replies

Featured Tech Videos