char **Words;
Words = (char **) malloc(sizeof(char)*Length);
if (Words==NULL) return -1;
Итак, вот я выделяю память, потом работаю с этим массивом, вроде бы не выходя за означенные границы выделенной памяти, но, тем не менее, все равно получается Access Violation. Вопрос: либо я неправильно проверяю то, выделилась ли память, либо что-то, о чем я не догадываюсь...
I>Итак, вот я выделяю память, потом работаю с этим массивом, вроде бы не выходя за означенные границы выделенной памяти, но, тем не менее, все равно получается Access Violation. Вопрос: либо я неправильно проверяю то, выделилась ли память, либо что-то, о чем я не догадываюсь...
Вы используете указатель на указатель, а надо просто указатель
char* Words = (char*) malloc(Length * sizeof(char));
if(!Words)
return -1;
I>Итак, вот я выделяю память, потом работаю с этим массивом, вроде бы не выходя за означенные границы выделенной памяти, но, тем не менее, все равно получается Access Violation. Вопрос: либо я неправильно проверяю то, выделилась ли память, либо что-то, о чем я не догадываюсь...
Я слабо понимаю для чего могла понадобится конструкция **Words, но в этом случае нужно было по идее память не под char, а под ссылочный тип выделять (под char*),только не знаю как это реализовать
I>>Итак, вот я выделяю память, потом работаю с этим массивом, вроде бы не выходя за означенные границы выделенной памяти, но, тем не менее, все равно получается Access Violation. Вопрос: либо я неправильно проверяю то, выделилась ли память, либо что-то, о чем я не догадываюсь...
__>Вы используете указатель на указатель, а надо просто указатель __>
I>>>Итак, вот я выделяю память, потом работаю с этим массивом, вроде бы не выходя за означенные границы выделенной памяти, но, тем не менее, все равно получается Access Violation. Вопрос: либо я неправильно проверяю то, выделилась ли память, либо что-то, о чем я не догадываюсь...
__>>Вы используете указатель на указатель, а надо просто указатель __>>
I>>>>Итак, вот я выделяю память, потом работаю с этим массивом, вроде бы не выходя за означенные границы выделенной памяти, но, тем не менее, все равно получается Access Violation. Вопрос: либо я неправильно проверяю то, выделилась ли память, либо что-то, о чем я не догадываюсь...
__>>>Вы используете указатель на указатель, а надо просто указатель __>>>
Здравствуйте, Аноним, Вы писали:
А>Можно вопрос? По идее, все равно ведь выделяется одинаковое количество памяти, мы в ее пределах работаем, какая разница, как выделять?
Здесь ведь все в том для чего мы выделем память
// выделяем место для первой размерности массива - выделяем место для указателейchar** Words = (char**) malloc(Length * sizeof(char*));
// выделяем место для данныхfor(size_t i=0;i<Length;i++)
Words[i] = (char*) malloc(Skolko_nado_dlia_vtoroy_razmernosti * sizeof(char));
// освобождение место для данныхfor(size_t i=0;i<Length;i++)
free(Words[i]);
// освобождение места указателей
free(Words);
Так как здесь идет двухмерный массив то надо выделить место для первой размерности, а потом место для второй, но первая размерность это указатель на вторую.