help with data type sizes


 
Thread Tools Search this Thread
Top Forums Programming help with data type sizes
# 22  
Old 01-18-2011
I'm not sure how to respond to this because I don't see the point you're making, or how it's relevant to the topic at hand.

For what it's worth, it is my opinion that address space layout is not a "useful" thing to learn for a beginning or intermediate (or even expert) C programmer, and it is also highly system-specific (like linking). Memory management concepts that I do believe to be generally useful for any C programmer are virtual memory and paging basics because those help understand and debug program behavior in a way that pertains to a great deal of circumstances and systems.

The one point I'm going to address is this:

Quote:
Sometimes the CPU hardware stack is not friendly to programmer data, and the stack is realloc()'d on the heap, and so grows upward.
I guess you mean setting an alternative stack manually by using a library function such as sigaltstack()...?!

In that case the alternative stack size is fixed, and it does not change the direction of growth (and it can't do so because that would require the compiler to generate different code for both versions).

Like I said, programs running on HP-UX on PA-RISC always have an "upward growing" stack (I guess this isn't the case on Itanium, which I forgot to mention). I do not know or care to check where the HP-UX/PA-RISC layouts put the other stuff. Most CPUs do not recognize a stack; Instead the ABIs used on them simply determine that a GPR is (ab-)used as a stack pointer, and the direction of growth.
# 23  
Old 01-18-2011
Quote:
Originally Posted by Driver
For what it's worth, it is my opinion that address space layout is not a "useful" thing to learn for a beginning or intermediate (or even expert) C programmer
It's important to understand the difference between heap, stack, and data memory as well as how C scope relates to it, and pointers are the most obvious way to show what difference it actually makes to the program.

To do that, you have to know what stack, heap, and data memory are, and why they're different, and what their limits are.

Besides, they're not all that different. Whether a stack grows up or down it's still a stack, likely in a distinct area of memory.
Quote:
I guess you mean setting an alternative stack manually by using a library function such as sigaltstack()...?!
I don't think he means an alternative stack in that sense, not a different execution context, but a separate space for variables. The PIC14 microprocessor series, for instance, has a hardware function-call stack 8 or 16 calls deep, instruction pointers only, and no access methods but CALL and RET. Local variables are completely seperate and in their own memory block.

Of course, the PIC14 is a fleabrained microprocessor with less RAM than your average toaster and a memory map that can be used to frighten small children; it's a wonder that compilers exist for it at all. But you get the idea: Some processors don't fit C's idea of a function call that well.
# 24  
Old 01-18-2011
I guess what prompted all this was the following remark (which I might even have overlooked since I didn't read the entire thread in detail):

Quote:
Since they're in stack space their addresses are very high, and end up flipping over to negative when you print them as signed integers.
Certainly I agree that the properties of scope, duration and even limitations should be understood.

However I disagree that the address space layout is a good tool to do this.

The address printed by the original poster happened to have a "high" address, so high that it will have the sign bit set if looked at through a signed integer. That is all there is to know at this (and most any) stage, IMO (which you are free to disagree with and I'm not going to argue about Smilie )
# 25  
Old 01-18-2011
Is it dead yet, or do we beat it more? Smilie
# 26  
Old 01-18-2011
The horse is a thin paste a mile wide, the argument lives on... Smilie
# 27  
Old 01-18-2011
It's dead, Jim!

Smilie

For some reason that reminds me of this:
Everybody loves Eric Raymond So I married a Kernel Programmer
# 28  
Old 01-19-2011
Zombie spirit horse, Thestral?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

Incompatible data type fpos_t in C

This is from a program I wrote over in 1998 that I am trying to compile on a linux machine: void write_line (FILE *fp, int rec_no, line_rec *arec) { fpos_t woffset; woffset = (rec_no - 1) * sizeof(line_rec); fsetpos(fp,&woffset); fwrite(arec,sizeof(line_rec),1,fp); }On the line... (2 Replies)
Discussion started by: wbport
2 Replies

2. Web Development

Data type to use for prices with commas

Hi everybody, I`m very new with PHP and Databases and I having the follow issue with prices data.. The original information is in CSV files. The prices have formatted with commas and dots as follow: 12,300.99 -->(thousands separated by commas) 3,500.25 -->(thousands separated... (10 Replies)
Discussion started by: cgkmal
10 Replies

3. Shell Programming and Scripting

Can I split a 10GB file into 1 GB sizes using my repeating data pattern

I'm not a unix guy so excuses my ignorance... I'm the database ETL guy. I'm trying to be proactive and devise a plan B for a ETL process where I expect a file 10X larger than what I process daily for a recast job. The ETL may handle it but I just don't know. This file may need to be split... (3 Replies)
Discussion started by: john091
3 Replies

4. UNIX for Advanced & Expert Users

Memory allocation for float data type

Dear All, How internally memory allocated when we declare the float data type. how many bytes allocated for decimal and how many bytes for fraction. kindly help me in this regards. (2 Replies)
Discussion started by: rajamohan
2 Replies

5. Shell Programming and Scripting

Perl data type checking

I am using perl 5.8.0. I need to check some values to see it they are floats. Our system does not have Data::Types so I can't use is_float. Is there something else that I can use? The only thing in Data is Dump.pm. I am not allowed to download anything to our system so I have to use what I have.... (3 Replies)
Discussion started by: ajgwin
3 Replies

6. UNIX for Dummies Questions & Answers

Directorie listing in Human form for data sizes

I have seen it done at my job before, there is a command that will make a notepad and show the directorie path, subfolders, and size of the subfolders? But i dont want it to go lower than 2 levels for example: folder_01 10 GB subfolder_02 10 GB subfolder_03 10 GB... (4 Replies)
Discussion started by: JUSSAN007
4 Replies

7. AIX

Value too large to be stored in data type???

Hello, I get this message : "Value too large to be stored in data type" when I try to open a 3Gb file. Can someone helps me to resolve the problem. Thank you very much (5 Replies)
Discussion started by: limame
5 Replies

8. Programming

data type limitation

I am writing some code to do analysis on the file system (HP-UX 11.11). I am using stat(..) to get file information. My problem is that the file-size may exceed the data types defined in 'sys/stat.h' & 'sys/types.h' respectively. Thus file-sizes in the Giga-byte range are not read correctly.... (2 Replies)
Discussion started by: ALTRUNVRSOFLN
2 Replies

9. Programming

time_t data type-- what does start +1 mean?

Hi, I am trying to understand an very old C program. .... time_t start, end; ptr = localtime(&start); ... fprintf(out, "%-35s 01 %5s %2s %10d 1 5 /tty/M%d/%02d %24s", buffer3, job, ver, start, mach_num,atoi(buffer), asctime(ptr)); fprintf(out, "%-35s 03 %5s %2s %10d 1 5... (9 Replies)
Discussion started by: whatisthis
9 Replies

10. Programming

FILE data type

Hi all, Can anyone tell me a little about the datatype FILE, which represents stream. What does its structure look like, and in which header file is it defined and so on... Ex : FILE *fp ; fp = fopen("filename", "w") ; (6 Replies)
Discussion started by: milhan
6 Replies
Login or Register to Ask a Question