Deutsch   English   Français   Italiano  
<vr1e67$1fa1p$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: Thiago Adams <thiago.adams@gmail.com>
Newsgroups: comp.lang.c
Subject: What is your opinion about init_malloc?
Date: Fri, 14 Mar 2025 11:24:07 -0300
Organization: A noiseless patient Spider
Lines: 35
Message-ID: <vr1e67$1fa1p$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Fri, 14 Mar 2025 15:24:08 +0100 (CET)
Injection-Info: dont-email.me; posting-host="6e7cb05722eb03f15f05f89a469e6ccf";
	logging-data="1550393"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX19BsIR3M6EVd4tNi3DYxLmyWlyguEs+338="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:rVtmhJja11AsVMdjkzap/Ft6J8Y=
Content-Language: en-GB
Bytes: 1622

What is your opinion about init_malloc?
One problem it solves it to initialise a const objects on heap.

#include <stdlib.h>
#include <string.h>
#include <stdio.h>

void * init_malloc(size_t size, void * src)
{
   void * p = malloc(size);
   if (p) {
      memcpy(p, src, size );
   }
   return p;
}

#define ALLOC(OBJ) ((typeof(OBJ)*) init_malloc(sizeof(OBJ), &(OBJ)))

////////// SAMPLE  //////////

struct Mail {
     const int id;
};

int main () {
     struct Mail* p0 = ALLOC((struct Mail){.id= 1});

     struct Mail* p1 = init_malloc(sizeof *p1, &(struct Mail){.id= 1});

     auto         p2 = ALLOC((struct Mail){.id= 1});

}

(I also posted on reddit)