delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/04/29/22:02:23

From: mgaugy AT ix DOT netcom DOT com
Newsgroups: comp.os.msdos.djgpp
Subject: Re: malloc?
Date: Wed, 29 Apr 1998 18:47:55 -0700
Organization: Netcom
Lines: 82
Message-ID: <3547D84B.5984@ix.netcom.com>
References: <6i7v0o$ns6$1 AT news DOT metronet DOT de>
Reply-To: mgaugy AT ix DOT netcom DOT com
NNTP-Posting-Host: sjx-ca53-11.ix.netcom.com
Mime-Version: 1.0
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

Lennart Marien wrote:
> 
> Hi!
> I have a severe problem which is bothering since
> hours.What Iīm trying o do is the following in pseudo
> code:(the struct PCXHeader is declared before)
> 
> int handle;
> short width,heigth;
> void addr_of_buf;
> 
> void readheaderPCX(char *fd,struct PCXHeader *header)
> /*this function works*/
> {
> handle=open(fd,O_BINARY);
>  read(handle,header,sizeof(*header));
> };
> 
> void readln(char *buffer,short width)
> {
> /*buffer is a pointer to a variable like 'char buffer[width]'*/
> [.....]
> /*The routine reads data bytes and expands them into buffer
> until buffer is full*/
> };
> 
> void loadpcx(int x, int y, char *fd)
> {
> struct PCXHeader h;
> readheader(fd,&h);
> /*works*/
>  width=h.x2-h.x1;
>   heigth=h.y2-h.y1;
> /*donīt know if you understand, but it works*/
> addr_of_buf=malloc(width);
> [...]
> /*the program reads data line and shows it....*/
> };
> 
> Hope this wasnīt confusing if so here is it in text:
> I read some information from an 8Bit-PCX file to compute the height and the
> width of
> the picture.Then a buffer is allocated to contain one line of a pic.Since
> itīs an
> 8Bit file the variable would look like char buffer[width].
> A Pointer addr_of_buf should contain the address of the allocated memory
> using malloc:
> addr_of_buf=malloc(width);
> Now a function called readln reads WIDTH bytes from the file and puts them
> into the buffer.My question is actually about malloc hy doesnīt it work?
> I always get an error message if I try to address my memory like this:
> 
> *addr_of_buf[10]=0;
> 
> He tells me of some unary operator *?
> What can I do?
> 
> Thanks in advance!!!!!
> cu


If I understand what you're doing, it shouldn't be that hard.  One thing
to
point out is the last line of code in your posting:

  *addr_of_buf[10]=0;

If you study your C syntax, you'll catch the bug.  What this line says
is:
Assign the value 0 to 11th pointer in your array of pointers.  Or
something
like that.  Try removing the preceding pointer dereference (*).  This
should
fix the problem.

  addr_of_buf[ 10 ] = 0;

This means "assign 0 to the 11th element in your array".

Hope this helps.

Michael

- Raw text -


  webmaster     delorie software   privacy  
  Copyright Đ 2019   by DJ Delorie     Updated Jul 2019