Я не знаю, как сделать это напрямую в SSMS. Может быть, создать несколько подключений к одному экземпляру на зарегистрированных серверах и затем запустить группу. Тем не менее, есть несколько сторонних приложений, которые могут помочь вам в этом. Вот 2 варианта:
Недавно я хотел сделать это сам и обнаружил следующий код:
Он определяет новый std :: allocator
, который может обеспечить выделение на основе стека для начального выделения памяти для контейнеров STL. Я нашел другой способ решения своей конкретной проблемы, поэтому сам не использовал код, но, возможно, он будет вам полезен. Обязательно прочитайте комментарии в коде, касающиеся использования и предостережений.
Тем, кто поставил под сомнение полезность и разумность такого подхода, подумайте:
Некоторые люди отмечают, что строка, использующая выделение на основе стека, не будет std :: string
, как будто это каким-то образом уменьшает его полезность. Правда, вы не можете использовать их взаимозаменяемо, поэтому вы не сможете передать стековую строку
функциям, ожидающим std :: string
. Но (если вы делаете это правильно), вы сможете использовать все те же функции-члены в вашей стековой строке
, которые вы используете сейчас в std :: string
, например find_first_of ()
, append ()
и т. д. begin ()
и end ()
будут работать нормально, поэтому вы сможете использовать многие алгоритмы STL. Конечно, это не будет std :: string
в самом строгом смысле этого слова, но в практическом смысле оно все равно будет «строкой», и все равно будет весьма полезным.
std :: string
в самом строгом смысле этого слова, но в практическом смысле оно все равно будет «строкой», и все равно будет весьма полезным. Вы сможете использовать многие алгоритмы STL. Конечно, это не будет std :: string
в самом строгом смысле этого слова, но в практическом смысле оно все равно будет «строкой», и все равно будет весьма полезным. The problem is that std::basic_string
has a template parameter for the allocator. But std::string
is not a template and has no parameters.
So, you could in principle use an instantiation of std::basic_string
with an allocator that uses memory on the stack, but it wouldn't be a std::string
. In particular, you wouldn't get runtime polymorphism, and you couldn't pass the resulting objects into functions expecting a std::string
.
You can't. Except...
std::string
is an instantiation of
std::basic_string<class CharType,
class Traits=char_traits<CharType>,
class Allocator=allocator<CharType> >
You could conceivably define an Allocator class that uses alloca for memory management. This would only work if the Allocator itself, and the basic_string
methods that invoke it directly or indirectly, are all inline
. A basic_string
object created with this allocator would not be a std::string
, but it would behave (mostly) like it. However, this would be a fair amount of work for limited gains. Specifically, using this class to return values from a function would be a career-limiting move.
I have no idea why you or anyone else would want to do this.
I suspect that doing such a thing would be difficult to do, I wonder why you want to do it? To allocate something entirely on the stack, the compiler needs to know at compile time what the exact size of the thing is - in your example it would need to know not only the size of the std::string
metadata, but also the size of the string data itself. This isn't too flexible, you would probably need different string types depending on the size of the string data you are wanting to include in it - not that it would be impossible to do, just it would tend to complicate things up a bit.