Closed arglone closed 6 months ago
我想不到任何一种情况会导致 request 为 NULL,也就是下面的代码我觉得是没必要的:
request
NULL
if (!request) continue;
threadpool<T>::run() 用的 request 最先是 WebServer::dealwithwrite() 和 WebServer::dealwithread() 中 append 操作进来的。append 是类似 m_pool->append(users + sockfd, 1); 这样直接操作的 users 数组。但是我们看到 WebServer::WebServer() 构造函数内是直接 users = new http_conn[MAX_FD]; 的,因此 users + sockfd 在任何时候都不可能为NULL。即使 WebServer::~WebServer() 析构函数内做了 delete[] users;,但 delete 关键字本身也不会改变指针的值,所以根本想不到为什么代码中要判断 request 为 NULL....
threadpool<T>::run()
WebServer::dealwithwrite()
WebServer::dealwithread()
append
m_pool->append(users + sockfd, 1);
WebServer::WebServer()
users = new http_conn[MAX_FD];
users + sockfd
WebServer::~WebServer()
delete[] users;
看看有无大佬分析一下这里。
multi define issue, see #276
我想不到任何一种情况会导致
request
为NULL
,也就是下面的代码我觉得是没必要的:threadpool<T>::run()
用的request
最先是WebServer::dealwithwrite()
和WebServer::dealwithread()
中append
操作进来的。append
是类似m_pool->append(users + sockfd, 1);
这样直接操作的 users 数组。但是我们看到WebServer::WebServer()
构造函数内是直接users = new http_conn[MAX_FD];
的,因此users + sockfd
在任何时候都不可能为NULL
。即使WebServer::~WebServer()
析构函数内做了delete[] users;
,但 delete 关键字本身也不会改变指针的值,所以根本想不到为什么代码中要判断request
为NULL
....看看有无大佬分析一下这里。