我的程序有时会崩溃std::sort()
,我编写了一个最小的程序来重现这种情况,但一切都很好。这是最小的例子:
typedef struct st {
int it;
char ch;
char charr[100];
vector<string *> *vs;
} st;
bool function(st *&s1, st *&s2) {
static int i = 1;
cout<<i<<" "<<&s1<<" "<<&s2<<endl;
++i;
return s1->it > s2->it;
}
int main(int argc, char **argv) {
vector<st *> ar;
for (int i = 0; i < 100; ++i) {
st *s = new st;
s->it = urandom32();
ar.push_back(s);
}
ar.clear();
for (int i = 0; i < 100; ++i) {
st …
Run Code Online (Sandbox Code Playgroud) 我用:
int syn_socket = (AF_INET, SOCK_RAW, IPPROTO_RAW);
Run Code Online (Sandbox Code Playgroud)
创建一个原始套接字,我有root权限.然后:
int on = 1;
int rc = setsockopt(syn_socket, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on));
Run Code Online (Sandbox Code Playgroud)
setsockopt
返回-1
,errno
是EBADF
.这是日志:
[2016-12-05 11:02:34 UTC] [syn.cpp:266] [syn]创建原始套接字(255)
[2016-12-05 11:02:34 UTC] [syn.cpp:220] [ send_syn_packet] setsockopt(255)失败.(Ba d文件描述符)
[2016-12-05 11:02:34 UTC] [syn.cpp:292] [syn]发送syn包失败.
strstr声明:
char *strstr(const char *haystack, const char *needle);
我的功能定义:
hostinfo_t *extract_host_from_url(const char *url) {
/* ... */
char *scheme_pos = strstr(url, "://");
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
我怎么用它:
void rewrite_url(string &url) {
/* ... */
hostinfo_t * hostinfo = extract_host_from_url(url.c_str());
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
错误信息:
错误:从'const char*'到'char*'的无效转换[-fpermissive]
char*scheme_pos = strstr(url,"://");
哪里出错了?