Ошибка в реализации malloc для массива структур

Разбираюсь с языком СИ, возникла проблема при использовании malloc для собственной структуры, чего ток не читал и не пробовал, при попытке присвоения выводит ошибку доступа к памяти.

#include<iostream>
#include<stdlib.h>
using namespace std;
struct TrieElement
{
    string val;
    size_t l_pos, r_pos;
};
int main()
{
    TrieElement* arr;
    arr = (TrieElement*)malloc(sizeof(TrieElement));
    arr[0].val = "ddd";
    return 0;
}

Не ругайте за частичное использование с++, сначала изучал именно его. Ответы вида "Используйте new, delete" прошу не писать, ибо требуется именно разобраться с СИ реализацией подобной задачи.


Ответы (1 шт):

Автор решения: Максим Герасимов

Достаточно было лишь осознать, что malloc не вызывает конструкторов, поэтому нужно всё инициализировать ручками, рабочий итог:

#include<stdlib.h>
#include<stdio.h>
struct TrieElement
{
    char* val;
    size_t l_pos, r_pos;
};
int main()
{
    TrieElement* arr;
    arr = (TrieElement*)malloc(sizeof(TrieElement));
    arr[0].val = (char*)malloc(sizeof(char));
    arr[0].val[0] = 'd';
    printf("%c", arr[0].val[0]);
    return 0;
}

Возможно кому-то сэкономит время:)

→ Ссылка