中分配一個char *指針值(誰是結構成員)的最優化方法我試圖做一個結構的集合,它的一些成員是一個字符串類型,並且由於字符串是'昂貴的'來處理我試圖通過使用指針來最大化性能。在struct []
我盡我所能從教程中學習,但在C++中有很多不同類型的字符串。
什麼是最快的方法來設置strVal
,如果值的類型是char*
?
DataCollection.h
extern "C" __declspec(dllexport) void GetContCollection(int CollectionLength,int StrLength, DataContainer** Collection);
typedef struct {
int iValue;
char* strValue;
}DataContainer;
DataCollection.cpp
extern "C" __declspec(dllexport) void GetContCollection(int CollectionLength,int StrLength, DataContainer** Collection)
{
*Collection = (DataContainer*)LocalAlloc(0, CollectionLength * sizeof(DataContainer));
// say i need to get a record from database returning a char array
// and i use current datatype
*DataContainer CurElement = *Collection;
// iteration on each element of the collection
for(int i=0, i< CollectionLength; i++, CurElement++)
{
char* x = getsomeValuefromSystemasChar();
//.... how to assign CurElement->strValue=?
CurElement->strValue =// kind of Allocation is needed or ....just assign
//next, do i have to copy value or just assign it ?
CurElement->strValue = x or strcpy(dest,source)// if copying must take place which function would be the best?
}
}
什麼是正確的,最優化方式來設置CurElement
?
分配字符串中最昂貴的部分是複製內容,而且無論您如何構造代碼,這都幾乎相同。那麼爲什麼不使用'std :: string'? – Barmar
@Barmar在'GetValue()'是'char *'時是否正確? –
這取決於返回值的代碼。保存指針是否安全,或者系統是否可以重用或釋放內存? – Barmar