powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ошибка с указателем
8 сообщений из 8, страница 1 из 1
Ошибка с указателем
    #34081705
httt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main ()
{
 char *str;
 sprintf(str,"path: %s",getenv("PATH"));
 printf("%s",str);
 return  0 ;
}
Почему эта программа выдает ошибку Segmentation fault.
Если str объявить как
Код: plaintext
char str[ 200 ]
, то все работает.
...
Рейтинг: 0 / 0
Ошибка с указателем
    #34081800
&lt;&gt;
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
память под str не выделена
...
Рейтинг: 0 / 0
Ошибка с указателем
    #34081872
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<>память под str не выделена

точно точно !
...
Рейтинг: 0 / 0
Ошибка с указателем
    #34081881
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JibSkeart <>память под str не выделена
точно точно !И совсем не точно-точно. Память под str выделена в обоих случаях. В первом случае четыре (или два) байта, во втором двести :)
...
Рейтинг: 0 / 0
Ошибка с указателем
    #34082010
&lt;&gt;
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl JibSkeart <>память под str не выделена
точно точно !И совсем не точно-точно. Память под str выделена в обоих случаях. В первом случае четыре (или два) байта, во втором двести :)
признаю ошибку, действительно, в первом случае память тоже выделена. странно, почему sprintf не может разместить строку "path: %s" по адресу 0x00000000. наверное, баг :)
...
Рейтинг: 0 / 0
Ошибка с указателем
    #34082148
httt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Память выделяется под указатель, а данные должны храниться в др. области памяти. Вообще такая конструкция возможна (с указателями) и что нужно для этого сделать?
...
Рейтинг: 0 / 0
Ошибка с указателем
    #34082172
htttПамять выделяется под указатель, а данные должны храниться в др. области памяти. Вообще такая конструкция возможна (с указателями) и что нужно для этого сделать?
Что-что... Ну, например, это:
Код: plaintext
1.
str=new char[ 200 ];
или это:
Код: plaintext
1.
str=(char*)calloc( 200 ,sizeof(char));
перед sprintf(...)
А вообще - разберитесь-ка для начала с теорией...
...
Рейтинг: 0 / 0
Ошибка с указателем
    #34082339
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
htttПамять выделяется под указатель, а данные должны храниться в др. области памяти. Вообще такая конструкция возможна (с указателями) и что нужно для этого сделать?

Когда ты передаешь в функцию имя массивы, ты передаешь на него указатель. Так что у тебя, в обоих случаях передается указатель. Разницу с памятью, думаю, понимаешь уже сам.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ошибка с указателем
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]