标题几乎都说明了.我有一些方法需要在一个新线程上运行,因为创建线程之前的所有代码几乎相同,我想我会创建一个函数,可以将我需要调用的Action作为参数.
问题是,我还没有找到如何告诉线程它需要执行Action.这甚至可能吗?这是我正在尝试做的一些示例代码.
private void ExecuteInBiggerStackThread(Action<Helper> action, Parameters parms)
{
ParameterizedThreadStart operation = new ParameterizedThreadStart(action);// here's the mess
Thread bigStackThread = new Thread(operation, 1024 * 1024);
bigStackThread.Start(parms);
bigStackThread.Join();
}
Run Code Online (Sandbox Code Playgroud)
问候,
seba
所以在这里我相信我在查看其他人的代码时发现了一个小的缓冲区溢出问题.它立刻让我觉得不正确,而且有潜在危险,但不可否认,我无法解释这个"错误"的实际后果,如果有的话.
我写了一个测试应用程序来演示错误,但发现(令我沮丧的是)无论溢出如何,它似乎都能正常运行.我想相信这只是偶然的,但是需要一些反馈来确定我的想法是否错误,或者是否真的存在问题,而不是在我的测试应用程序中显示出来.
问题代码(我认为无论如何):
char* buffer = new char[strlen("This string is 27 char long" + 1)];
sprintf(buffer, "This string is 27 char long");
Run Code Online (Sandbox Code Playgroud)
现在,这对我来说很突出,我想把它标记为可能的缓冲区溢出是因为第一个strlen.由于指针运算,"错误"放置+ 1将导致strlen返回26而不是27(取"他的字符串的长度为27个字符长").sprintf我相信,然后将27个字符打印到缓冲区并导致缓冲区溢出.
这是正确的评估吗?
我编写了一个测试应用程序来为我正在查看的代码演示这个,并发现即使在调试器中字符串也会正确打印.我还尝试在此代码之前和之后将其他变量放在堆栈和堆上,以查看是否可以影响邻近的内存区域,但仍然收到正确的输出.我意识到我新分配的堆内存可能不相邻,这可以解释缺乏有用的溢出,但我真的想确认其他人的意见,如果这实际上是一个问题.
由于这是一个非常简单的"问题",如果你能通过某种参考来支持你的答案,那就太好了.虽然我重视并欢迎您的意见,但我不会接受"是的"作为最终答案.提前谢谢你.
更新:许多有很多额外见解的好答案.不幸的是,我无法接受所有这些.感谢您分享您的知识并成为我的"第二意见".我很感激帮助.
我正在尝试通过ftp_put将文件上传到Windows服务器.
我的代码如下:
$date = date('ymd');
$file_name = $date.'.csv';
$file_location = 'D:/inetpub/wwwroot/website.com/html/assets/'.$file_name;
//set up basic connection
$conn_id = ftp_connect(FTP_HOST, FTP_PORT);
// login with username and password
$login_result = ftp_login($conn_id, FTP_USER, FTP_PASS);
// check connection
if ((!$conn_id) || (!$login_result)) {
echo "FTP connection has failed!";
exit;
} else {
echo "Connected to FTP Server";
}
$upload = ftp_put($conn_id, $file_name, $file_location, FTP_ASCII);
// check upload status
if (!$upload) {
echo "FTP upload has failed!";
} else {
echo "File Uploaded";
}
// close …Run Code Online (Sandbox Code Playgroud) 我有一个我无法访问的mysql表,我收到以下错误
ERROR 1194 (HY000): Table 'menu_config' is marked as crashed and should be repaired
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?我的所有数据都会丢失吗?
我有我公司产品的图形用户界面.我想保护在客户端和服务器之间来回发送的数据.
SSL是其中一个选择吗?如果是的话,请告诉我如何在我的应用程序代码中实现它的步骤.
我需要购买证书还是可以制作..这是最好的选择?
任何帮助表示赞赏.谢谢..
我正在使用FormsAuthenticationTicket登录,如下所示:
Session["userName"] = UserName.Text;
Session["password"] = Password.Text;
Session["domain"] = Domain.Text;
string role = "Administrators";
// Create the authentication ticket
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1, // version
UserName.Text, // user name
DateTime.Now, // creation
DateTime.Now.AddMinutes(60),// Expiration
false, // Persistent
role); // User data
// Now encrypt the ticket.
string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
// Create a cookie and add the encrypted ticket to the
// cookie as data.
HttpCookie authCookie =
new HttpCookie(FormsAuthentication.FormsCookieName,
encryptedTicket);
// Add the cookie …Run Code Online (Sandbox Code Playgroud) 我正在使用Doxygen来记录一些Objective-C代码.我在类定义之外声明了一些常量.我想让这些出现在课堂文档中.我怎样才能制造含氧气?(使用\ file只是在单独的文档页面中显示它们).
#import blah blah
/**
* This is my constant
*/
extern NSString*constant someConstant;
/**
* More documentation
*/
@interface MyClass : NSObject <NSCoding> {
//etc
}
Run Code Online (Sandbox Code Playgroud) 我是autotools的新手,我正在研究一个C项目.我想将我的项目添加到git存储库.我需要在我的版本控制系统中跟踪哪些文件由autotools生成,哪些文件应该被忽略?
开发VSS编写器应用程序:
在备份期间看到此错误,由Windows备份工具启动,是否有2155348129来自Microsoft的错误代码?
从"2010 - 07 - 20T02:54:19.354000000Z"开始的备份操作失败,因为创建正在备份的卷的卷影副本的卷影复制服务操作失败,并显示以下错误代码'2155348129 "
当VSSwriter服务(我的应用程序)停止时,不会发生这种情况.
任何帮助表示赞赏.在TechNet上找不到任何有用的东西.
Hackish解决方法:有趣的是备份工作是"windows分区处于活动状态".当然,这会使系统在重启时无法启动
我想得到一些关于构建我的javascript代码和jquery函数的建议.我喜欢使用JQuery进行dom事件处理和ajax等.我已经编写了过去看起来很糟糕的代码,我的整个js文件由一堆匿名的Jquery函数组成.
我想知道 - 与JQuery结合时"结构良好"的javascript文件是什么样的?是否会有许多标准的javascript函数,然后$()在需要时放入一些JQuery 函数?以纯粹的程序方式处理代码是否可以,或者最好使用一些OOP概念?我总是只有一堆函数,这些函数在这里和那里分层调用辅助函数并没有对象(除了使用一些随机第三方库时使用的那些).
我不是一个javascript程序员(主要是Java)所以来自经验丰富的js开发人员的任何建议都会很棒.
我正在尝试开发一个应用程序,防止用户在没有密码的情况下访问指定的应用程序.情景是......
我正在做剩下的事情,只是第2部分令我感到困惑,经过多天阅读广播意图等并试图在我的试验项目中听"android.intent.action.MAIN"等我不能似乎检测到我的应用程序何时启动.
有人可以帮忙吗?我是否正确地寻找新的应用程序广播意图启动,或者我应该阅读系统日志以获取新意图,或者使用本机代码执行某些操作?
任何指针都会有所帮助,即使你无法完全回答它,我也可以做更多的研究.非常感谢.伊恩