입력 문자열에 필요한 정확한 메모리 만 malloc하고 가리킬 수 있습니까?

와트 바트

fgets목록 에서 입력 문자열을 저장하는 프로그램을 만들고 있습니다. 최대 길이는 고정되어 있지만 더 짧을 수도 있습니다. 다음과 같이 저장합니다.

typedef char line[LINE_SIZE];

struct node{
    line *t;      //pointer and not just a variable so I can "detach" the allocation to do stuff 
    struct node *prev; 
    struct node *next;
};

그러나 내 프로그램 malloc(sizeof(line))에서는 최대 고정 길이를 가진 배열을 수행합니다.

제 질문은 malloc( strlen( str ) + sizeof( ( char )'\0' ) )필요한 메모리 만 정확하게 사용하는 것과 같은 것을 할당한다면 어떻게 지적 할 수 있습니까?

구조체 char*내부를 사용해도 괜찮 node습니까? 내가 위험을 감수합니까?

구조체 내부의 유연한 배열에 대해 들었지만 프로그램을 분리하고 다른 포인터로 가리킬 수 있어야하기 때문에 배열을 구조체 내부에 직접 배치하고 싶지 않습니다.

존 박

malloc()할당 한 주소를 반환하면 반환 값을 변수에 할당하고 가리킬 수 있습니다. 변수가 구조체의 동일한 멤버 인 경우에도 항상 최대 또는 동일한 메모리 크기를 할당 할 필요는 없습니다.

char* line=malloc(strlen(str)+1);  // +1 for null terminate
strcpy(line, "This is a str");  // points the memory of returned

char*구조체에서 사용하는 것은 절대적으로 좋습니다. struct의 멤버를 일반 변수처럼 취급하십시오.

struct node
{
  char* t;
  struct node* prev;
  struct node* next;
}

node n;
n.t = malloc(strlen(str) + 1);  // it's fine.
strcpy(n.t, "This is a node");  // using the memory you allocated above
n.prev = n.next = NULL;

... // doing some processing

free(n.t);  // don't forget to call free() when you're done using the memory.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

`Watch1` 창에서 개별 문자열 변수에 필요한 코드 페이지를 가리킬 수 있습니까?

분류에서Dev

명령 뒤에 입력 한 모든 내용을 원시 문자열로 처리 할 수 있습니까?

분류에서Dev

정수가 필요한 입력에 대한 Python 오류 처리

분류에서Dev

사용자가 입력 한 단어를 확인하여 주어진 문자 목록에서 만들 수 있습니까?

분류에서Dev

두 개의 변수가 메모리의 동일한 주소를 가리킬 수 있습니까?

분류에서Dev

사용자가 프로세스를 향상시킬 수 있지만 감소하려면 루트가 필요한 이유는 무엇입니까?

분류에서Dev

FFMpeg에 대한 메모리 스트림 입력 파일을 사용할 수 있습니까?

분류에서Dev

systemverilog 4 상태 변수에 더 많은 메모리가 필요한 이유는 무엇입니까?

분류에서Dev

R에서 비슷한 값을 가진 다른 문자열이 있음에도 불구하고 하나의 문자열 만 바꿀 수 있습니까?

분류에서Dev

Android Studio에 필요한 메모리는 얼마입니까?

분류에서Dev

모든 머티리얼 UI 입력에 variant = 'outlined'가있는 것처럼 스타일을 지정하는 테마를 어떻게 만들 수 있습니까?

분류에서Dev

RxJS Observable은 한 명의 가입자 만 처리 할 수 있습니까?

분류에서Dev

식별자가 필요하지만 정수 리터럴이 있습니다.

분류에서Dev

다른 기본 키가 정확히 동일한 레코드를 가리킬 수 있습니까?

분류에서Dev

AnalyticsReceiver-그게 무엇입니까? 그리고 왜 '수신자에게 권한이 필요하지 않습니다'경고가 발생합니까?

분류에서Dev

공백으로 분리 될 수있는 정확한 문자열을 어떻게 일치시킬 수 있습니까?

분류에서Dev

문자가 있어야하지만 순수하게 숫자를 가질 수없고 특수 문자를 가질 수없는 문자열에 대한 정규식이 필요합니다.

분류에서Dev

Django에 입력 한 주소로 사용자를 리디렉션하는 양식을 어떻게 만들 수 있습니까?

분류에서Dev

사용자에게 필요한 것만로드하여 문자열의 효율성을 극대화 할 수있는 방법은 무엇입니까?

분류에서Dev

C 스타일 문자열에 대한 포인터를 인수로 받고 메모리를 할당하거나 수정할 수있는 올바른 방법은 무엇입니까?

분류에서Dev

malloc이 할당 한 메모리에 배열 표기법을 사용할 수 있습니까?

분류에서Dev

폴더의 내용을 수정하기 위해 관리자 권한이 필요한지 확인하는 방법은 무엇입니까?

분류에서Dev

Oracle 10G의 테이블에 특정 문자열 만 입력하도록 허용 할 수 있습니까?

분류에서Dev

리셀러 계정을 사용하여 리셀러의 GApps (모든 도메인)에서 최고 관리자 만 얻을 수 있습니까?

분류에서Dev

JLabel에서 고정 된 "물리적"길이 문자열을 어떻게 만들 수 있습니까?

분류에서Dev

마더 보드가 지원한다고 주장하더라도 고주파 DDR4 메모리를 사용하여 메모리 버스를 포화시킬 수 있습니까?

분류에서Dev

문자열 메모리 할당에서 가능한 메모리 누수

분류에서Dev

Process Explorer에서 작업 메모리와 개인 메모리에 사용되는 정확한 총 바이트 수를 얻을 수 있습니까?

분류에서Dev

PHP / MYSQL-행에서 하나의 요소 만 표시 할 수 있습니다. 가능한 문제입니까?

Related 관련 기사

  1. 1

    `Watch1` 창에서 개별 문자열 변수에 필요한 코드 페이지를 가리킬 수 있습니까?

  2. 2

    명령 뒤에 입력 한 모든 내용을 원시 문자열로 처리 할 수 있습니까?

  3. 3

    정수가 필요한 입력에 대한 Python 오류 처리

  4. 4

    사용자가 입력 한 단어를 확인하여 주어진 문자 목록에서 만들 수 있습니까?

  5. 5

    두 개의 변수가 메모리의 동일한 주소를 가리킬 수 있습니까?

  6. 6

    사용자가 프로세스를 향상시킬 수 있지만 감소하려면 루트가 필요한 이유는 무엇입니까?

  7. 7

    FFMpeg에 대한 메모리 스트림 입력 파일을 사용할 수 있습니까?

  8. 8

    systemverilog 4 상태 변수에 더 많은 메모리가 필요한 이유는 무엇입니까?

  9. 9

    R에서 비슷한 값을 가진 다른 문자열이 있음에도 불구하고 하나의 문자열 만 바꿀 수 있습니까?

  10. 10

    Android Studio에 필요한 메모리는 얼마입니까?

  11. 11

    모든 머티리얼 UI 입력에 variant = 'outlined'가있는 것처럼 스타일을 지정하는 테마를 어떻게 만들 수 있습니까?

  12. 12

    RxJS Observable은 한 명의 가입자 만 처리 할 수 있습니까?

  13. 13

    식별자가 필요하지만 정수 리터럴이 있습니다.

  14. 14

    다른 기본 키가 정확히 동일한 레코드를 가리킬 수 있습니까?

  15. 15

    AnalyticsReceiver-그게 무엇입니까? 그리고 왜 '수신자에게 권한이 필요하지 않습니다'경고가 발생합니까?

  16. 16

    공백으로 분리 될 수있는 정확한 문자열을 어떻게 일치시킬 수 있습니까?

  17. 17

    문자가 있어야하지만 순수하게 숫자를 가질 수없고 특수 문자를 가질 수없는 문자열에 대한 정규식이 필요합니다.

  18. 18

    Django에 입력 한 주소로 사용자를 리디렉션하는 양식을 어떻게 만들 수 있습니까?

  19. 19

    사용자에게 필요한 것만로드하여 문자열의 효율성을 극대화 할 수있는 방법은 무엇입니까?

  20. 20

    C 스타일 문자열에 대한 포인터를 인수로 받고 메모리를 할당하거나 수정할 수있는 올바른 방법은 무엇입니까?

  21. 21

    malloc이 할당 한 메모리에 배열 표기법을 사용할 수 있습니까?

  22. 22

    폴더의 내용을 수정하기 위해 관리자 권한이 필요한지 확인하는 방법은 무엇입니까?

  23. 23

    Oracle 10G의 테이블에 특정 문자열 만 입력하도록 허용 할 수 있습니까?

  24. 24

    리셀러 계정을 사용하여 리셀러의 GApps (모든 도메인)에서 최고 관리자 만 얻을 수 있습니까?

  25. 25

    JLabel에서 고정 된 "물리적"길이 문자열을 어떻게 만들 수 있습니까?

  26. 26

    마더 보드가 지원한다고 주장하더라도 고주파 DDR4 메모리를 사용하여 메모리 버스를 포화시킬 수 있습니까?

  27. 27

    문자열 메모리 할당에서 가능한 메모리 누수

  28. 28

    Process Explorer에서 작업 메모리와 개인 메모리에 사용되는 정확한 총 바이트 수를 얻을 수 있습니까?

  29. 29

    PHP / MYSQL-행에서 하나의 요소 만 표시 할 수 있습니다. 가능한 문제입니까?

뜨겁다태그

보관