How do you declare an array that will hold more than 64KB of data? Ans. The coward's answer is, you can't, portably. The ANSI/ISO C standard requires compilers to handle only single objects as large as (32KB - 1) bytes long. Why is 64KB magic? It's the biggest number that needs more than 16 bits to represent it. For some environments, to get an array that big, you just declare it. It works, no trouble. For others, you can't declare such an array, but you can allocate one off the heap, just by calling malloc() or calloc(). On a PC compatible, the same limitations apply, and more. You need to use at least a large data model. You might also need to call 'far' variants of malloc() or calloc(). For example, with Borland C and C compilers, you could write far char *buffer = farmalloc(70000L); Or with Microsoft C and C compilers, you could write far char *buffer = fmalloc(70000L); to allocate 70,000 bytes of memory into a buffer. (The L in 70000L forces a long constant. An int constant might be only 15 bits long plus a sign bit, not big enough to store the value 70,000.) - Study24x7
Social learning Network
06 Apr 2023 11:46 AM study24x7 study24x7

How do you declare an array that will hold more than 64KB of data? Ans. The coward's answer is, you can't, portably. The ANSI/ISO C standard requires compilers to handle only single objects as large as (32KB - 1) bytes long. Why is 64KB magic? It's the biggest number that needs...

See more

study24x7
Write a comment
Related Questions
500+   more Questions to answer
Most Related Articles