LPSTR как освободить память после использования

StackOverflow https://stackoverflow.com/questions/1688278

  •  18-09-2019
  •  | 
  •  

Вопрос

Предположим, у меня есть переменная LPSTR .Как мне освободить память после использования переменной?Так ли это

LPSTR szFileName = GetSBCSBuffer(sFilePath); // sFilePath is a CString
delete szFileName;

или

delete []szFileName;

Любезно посоветуйте

Это было полезно?

Решение

Если память была выделена с помощью new char[SIZE] затем его нужно освободить с помощью delete [].

Другие советы

Вы не можете ответить на этот вопрос, не зная специфики GetSBCSBuffer .Надеюсь, кто бы ни написал функцию, он оставил вам код и / или документацию, чтобы вы могли видеть, откуда берется строка.Возможно, ни один из ваших вариантов не является правильным.Автор GetSBCSBuffer, возможно, использовал другой распределитель памяти или вернул указатель на местоположение, внутреннее для sFilePath.В последнем случае было бы очень плохо вызывать какой-либо освободитель.

Я только что заметил, что вы сами ответили на этот вопрос в своем комментарии к ответ старшего джорджа.В реализации использовался new[], поэтому вам нужно удалить[].

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top