Olá, pessoal. Estou com alguns problemas para fazer a alocação dinâmica de memória com um array bidimensional de char, referente a atividade 7 da aula 1. Utilizo a IDE Visual Studio C++ para desenvolver as atividades. O código encontra-se abaixo.
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
char** mapa;
int linhas = 0;
int colunas = 0;
int main() {
setlocale(LC_ALL, "en-US");
FILE* f;
errno_t err;
err = fopen_s(&f, "mapa.txt", "r");
if (f == 0) {
printf("Erro na leitura do mapa\n");
exit(1);
}
fscanf_s(f, "%d %d", &linhas, &colunas);
// printf("linhas = %d colunas = %d", linhas, colunas);
mapa = malloc(sizeof(char*) * linhas);
for (int i = 0; i < linhas; i++) {
mapa[i] = malloc(sizeof(char) * (colunas + 2));
}
}
Esses são os "warnings" apresentados:
Gravidade Código Descrição
Aviso C6011 Desreferenciando ponteiro NULL "mapa".
Aviso C6386 Saturação do buffer durante a escrita de "mapa": o tamanho gravável é de "sizeof(char )linhas" bytes, porém "16" bytes podem ter sido escritos.
Aviso C26451 Estouro aritmético: usando o operador '+' em um valor de byte 4 e, em seguida, convertendo o resultado em um valor de byte 8. Converta o valor no tipo mais amplo antes de chamar o operador '+' para evitar estouro (io.2).
A sensação que tenho é que o compilador não reconhece o char** mapa como um array. Já tentei utilizar uma variável auxiliar pointer para char "pAux" para receber a alocação no laço for, e então copiá-los para "mapa" via memcpy, mas ele não consegue realizar a cópia.
Caso alguém possa me ajudar, serei grato.