Ошибка в реализации 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;
}
Возможно кому-то сэкономит время:)