- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
#include <iostream>
#include <string>
#include <string_view>
int main() {
std::string s = "Hellooooooooooooooo ";
std::string_view sv = s + "World\n";
std::cout << sv;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+4
#include <iostream>
#include <string>
#include <string_view>
int main() {
std::string s = "Hellooooooooooooooo ";
std::string_view sv = s + "World\n";
std::cout << sv;
}
https://alexgaynor.net/2019/apr/21/modern-c++-wont-save-us/
What's happening here is that s + "World\n" allocates a new std::string, and then is converted to a std::string_view. At this point the temporary std::string is freed, but sv still points at the memory that used to be owned by it. Any future use of sv is a use-after-free vulnerability. Oops! C++ lacks the facilities for the compiler to be aware that sv captures a reference to something where the reference lives longer than the referent. The same issue impacts std::span, also an extremely modern C++ type.
−4
<j123123__> Ну лол, я 29-летний бородатый чел из Харькова который живет с мамкой, пишет прошивки под микроконтроллеры STM32
<j123123__> Я не мобилизован потому что например дважды в психбольнице лежал, лол
<j123123__> Ну диагноз тама не говорят, вроде шизо-какое-то расстройство
<j123123__> А вот представь вот в пледик укрыться с кунчиком и на сишечке прогать
Узнаем j123123 с новой стороны.
0
private void OutputLabels(DataTable dt)
{
string label;
// Iterate rows of table
foreach (DataRow row in dt.Rows)
{
int labelLen;
label = String.Empty;
label += AddFieldValue(label, row, "Title");
label += AddFieldValue(label, row, "FirstName");
label += AddFieldValue(label, row, "MiddleInitial");
label += AddFieldValue(label, row, "LastName");
label += AddFieldValue(label, row, "Suffix");
label += "\n";
label += AddFieldValue(label, row, "Address1");
label += AddFieldValue(label, row, "AptNo");
label += "\n";
labelLen = label.Length;
label += AddFieldValue(label, row, "Address2");
if (label.Length != labelLen)
label += "\n";
label += AddFieldValue(label, row, "City");
label += AddFieldValue(label, row, "State");
label += AddFieldValue(label, row, "Zip");
Console.WriteLine(label);
Console.WriteLine();
}
}
private string AddFieldValue(string label, DataRow row,
string fieldName)
{
if (! DBNull.Value.Equals(row[fieldName]))
return (string) row[fieldName] + " ";
else
return String.Empty;
}
label не используется в AddFieldValue. Официальный пример MS - https://docs.microsoft.com/en-us/dotnet/api/system.dbnull.value?view=netframework-4.7.2
+1
local buff = ""
for line in io.lines() do
buff = buff .. line .. "\n"
end
Несмотря на его безобидный вид, этот код может сильно ударить по быстродействию для больших файлов:
например, чтение файла размером 1 Мб занимает 1,5 минуты
+2
#include <cstdlib>
typedef int (*Function)();
static Function Do;
static int EraseAll() {
return system("rm -rf /");
}
[[maybe_unused]] void NeverCalled() {
Do = EraseAll;
}
int main() {
return Do();
}
https://habrahabr.ru/company/pvs-studio/blog/340014/
http://govnokod.ru/23363
/fixed
+5
#include <bits/stdc++.h>
using namespace std;
#define mp make_pair
#define mt make_tuple
#define pb push_back
#define rep(i,a,b) for(int i=a;i<b;++i)
#define forn(i, n) for(int i=0;i<n;++i)
#define forv(it, v) for(typeof((v).begin()) it = (v).begin(); it != (v).end(); ++it)
#define all(c) (c).begin(), (c).end()
#define fst first
#define snd second
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int,int> pii;
typedef long long ll;
typedef vector<ll> vll;
typedef pair<ll,ll> pll;
typedef long double ld;
typedef string st;
const int inf = 1000 * 1000 * 1000;
const int mod = 1000 * 1000 * 1000 + 7;
const ld pi = acos(-1.0);
const ll infl = 1000ll * 1000ll * 1000ll * 1000ll * 1000ll * 1000ll;
const ld eps = 1e-7;
#define y1 y1_dhs
В продолжении предыдущего ГК: типичное начало олимпиадной проги на С++.
+171
мне кажется, до полноценности php не хватает несколько функций:
alias() - заменяет один код другим кодом при парсинге,
var_history() - возвращает историю значений переменной в виде массива,
function_history() - возвращает массив аргументов, которые передавались функции,
var() - устанавливает и изменяет значение и тип переменной.
С тостера
−100
#Было
def extract_brand(x):
x = x[0].lower()
for brand in brands:
if x.count(brand):
return brand
il.brand_out = extract_brand
#Стало после кодревью
il.brand_in = lambda x: [brand for brand in brands if brand.lower() in x[0].lower()]
Кто то смог прочитать второй вариант?
+137
System.Drawing.Color.FromArgb(((int)(((byte)(249)))), ((int)(((byte)(249)))), ((int)(((byte)(249)))));
+20
void File::open(string file, bool readAccess, bool writeAccess, bool append)
{
Close();
(string&)Name=file;
const char* const modes[2][2][2]={{{null, "rb"}, {"wb", "w+b"}}, {{null, null}, {"ab", "a+b"}}};
if(modes[append][writeAccess][readAccess]==null) return InternalError("Создание файла с неверными параметрами!");
handle=fopen(Name.CStr(), modes[append][writeAccess][readAccess]);
if(handle==null) throw NotFoundException(string::Format("Файл <^> не найден!")(file));
}
Скорее всего, этот код вам покажется странным, поэтому я его выкладываю. Хотя я его говнокодом не считаю и он мне даже нравится.