According to this consensus in the default allowed inputs thread, functions may output by writing to an out argument.

When outputting an array in languages like C/C++, where arrays are pointers to locations in memory, can we assume the memory at the output location to have been allocated and to be of a sufficient size to output the complete answer, or must the memory be allocated in the code?

Below are some example functions in C that output by modifying their parameters; please consider each case, and state which cases you'd consider acceptable.

// Fixed size
void one_to_ten(int*o){
    for(int i=1; i<=10; i++)

// Output size is a function of input size
void mul_table(int*o,int*a,int m,int*b,int n){
    for(int i=0; i<m; i++)
        for(int j=0; j<n; j++)

// Size of output is given
void roll_dice(int*res, int n){
    for(int i=0; i<n; i++)

// Output has a variable size and a defined maximum size
void scramble(int*o, int seed){
    int r;
    for(int i=0; (r=rand())&&i<128; i++)
  • \$\begingroup\$ The range of where should be defined the arg is 0..9 so the array in the arg would be int a[n]; with n>=10 \$\endgroup\$ – RosLuP Dec 20 '18 at 15:15
  • \$\begingroup\$ @RosLuP I'm not sure if I understand what you are saying. \$\endgroup\$ – Rogem Dec 20 '18 at 20:27

You can at least assume the output buffer is enough

Anyway even GCC doesn't(or can't) check it when doing memcpy


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .