int *ptr + max possible value


 
Thread Tools Search this Thread
Top Forums Programming int *ptr + max possible value
# 1  
Old 09-18-2008
int *ptr + max possible value

From reading my C book, Im aware that the integers have a maximum value which depends on what type of processor you are using (since they use 16-bit or 32-bit instructions).

Now I know pointers are very flexible, since they can reference anything, but in the case of integer pointers, can they reference an int value beyond the max. value of 4,294,967,295 (Im considering unsigned int * in a 32-bit environment) ?

Reason Im asking is because Im designing a program which reports on my company's disk usage (where some of our files are in the gigabyte and terabyte range)

many thanks
# 2  
Old 09-18-2008
Depends in practice on the compiler suite. POSIX and C89 and other standards define constants which you can query and use in your programs; look for MAXINT and friends.

Code:
vbvntv$ gcc -E - <<HERE | tail -1
> #include <values.h>
> MAXINT
> HERE
2147483647

The standard solution for big files is to use "long int" although again what exactly that means in practice depends on the compiler etc.

It's not really clear why you are asking about pointers. Pointers by definition work on memory addresses, and the type of the memory address they point to (the number of bytes to use beyond the pointed-to address) is independent of the location in memory.
# 3  
Old 09-21-2008
use uint32_t or uint64_t from inttypes.h

It guarantees same size on any platforms.
# 4  
Old 09-22-2008
I think, files size could not go beyond the int size. Offset reference type is size_t and it is unsigned int.
# 5  
Old 09-22-2008
There's a separate API for file sizes. size_t I believe is meant for sizes of in-memory structures. ftell(3) for example returns a long. lseek(3) returns an off_t. See further <sys/types.h> documentation e.g. <sys/types.h>

The idea that files could not be larger than a particular offset is a source of many bugs and growing pains. Some older file systems could not cope with large files, which back then meant bigger than 2GB or 4GB. We are beginning to see this again as storage capacities are approaching the next boundary. It's the good old "640kb ought to be enough for everybody" syndrome.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Solaris

Cannot resolve PTR record issue

Hi guys, I am currently receiving the following output in /var/log/syslog and is occurring every second leading to /var directory being full after every 2 days. Aug 20 17:32:29 opaldn1 sendmail: r7KCOlQm002517: ruleset=check_rcpt, arg1=<postmaster@silverapp6>, relay=, reject=450 4.4.0... (3 Replies)
Discussion started by: Junaid Subhani
3 Replies

2. Solaris

how to get rid off the warning: CC: Warning: Option -ptr not supported?

Hi I am getting the below error /bin/mkdir -p ./obj/SunOS10_32/SingleThread/Debug/CC_5_3 /bin/mkdir -p ./bin/SunOS10_32/SingleThread/Debug/CC_5_3 CC -c -ptr./obj/SunOS10_32/SingleThread/Debug/CC_5_3 -V -I/opt/tuxedo/tuxedo11gR1/include -I. -I../../OBED_SA_1-27a/include... (1 Reply)
Discussion started by: deboprio
1 Replies

3. Programming

'int air_date' '%'?

int air_date='20100103'; //2010 - Jan - 03 /* My goal here is to subtract a day. */ int day = air_date % 100; //?????? Is this right? //Are there any functions time/date for this type of date format? :cool: (7 Replies)
Discussion started by: sepoto
7 Replies

4. Programming

Handle int listen(int sockfd, int backlog) in TCP

Hi, from the manual listen(2): listen for connections on socket - Linux man page It has a parameter called backlog and it limits the maximum length of queue of pending list. If I set backlog to 128, is it means no more than 128 packets can be handled by server? If I have three... (3 Replies)
Discussion started by: sehang
3 Replies

5. UNIX for Dummies Questions & Answers

int open(const char *pathname, int flags, mode_t mode) doubt...

hello everybody! I want to create a file with permissions for read, write, and execute to everybody using C, so I write this code: #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int main(){ int fileDescriptor; fileDescriptor =... (2 Replies)
Discussion started by: csnmgeek
2 Replies

6. AIX

Configuring Color Laser ptr in AIX

Hi All, I have Network color laser printer which is to be configured in AIX5L. The Model of the printer is OKI C3200. Will it is supported with AIX 5..? I could not find any drivers for this. Will any compatible drivers are available for this printer... I tried with the default drivers hplj-4... (2 Replies)
Discussion started by: helloajith
2 Replies

7. Programming

file ptr.

Is there any way to know the filename from an available file pointer. (2 Replies)
Discussion started by: bankpro
2 Replies

8. Programming

difference between int ** func() and int *& func()

What is the difference between int** func() and int*& func(). Can you please explain it with suitable example. Thanks, Devesh. (1 Reply)
Discussion started by: devesh
1 Replies

9. Programming

Reg: char ptr - Coredumps

#include <stdio.h> void main() { int Index=1; char *Type=NULL; Type = (char *)Index; printf("%s",Type); } Getting coredump (5 Replies)
Discussion started by: vijaysabari
5 Replies
Login or Register to Ask a Question