Расщепление строк в PHP и получение последней части

Вы выделяете свою строку в стеке, а затем возвращаете указатель на нее. Когда ваша функция вернется, любые распределения стека становятся недействительными; указатель теперь указывает на область в стеке, которая, вероятно, будет перезаписана при следующем вызове функции.

Чтобы сделать то, что вы пытаетесь сделать, вам нужно сделать один из следующее:

  1. Выделите память в куче с помощью malloc или аналогичного, затем верните этот указатель. Затем вызывающему абоненту необходимо вызвать free, когда это будет сделано с памятью.
  2. Выделить строку в стеке в вызывающей функции (той, которая будет использовать строку), и передать указатель в функцию для ввода строки. Во время всего вызова вызывающей функции данные в его стеке действительны; его только после того, как вы вернете, что выделенное стекное пространство будет использовано чем-то другим.
37
задан Raphael Jeger 10 June 2013 в 18:52
поделиться