假设你有以下function: char *getp() { char s[] = "hello"; return s; } 由于该函数正在返回一个指向外部函数中的局部variables的指针,会导致内存泄漏吗? PS我仍然在学习C,所以我的问题可能有点天真… [更新] 所以,如果说你想返回一个新的char[]数组(也许是一个子string函数),你准确返回什么? 它应该是指向外部variables的指针吗? 即不是函数本地的char[] ?
我试图读取input使用scanf和存储到char * dynamic按照GCC手册指定 ,但它给编译时间错误。 char *string; if (scanf ("%as",&string) != 1){ //some code } else{ printf("%s\n", *string); free(string); //some code }
我有一个.NET UserControl(FFX 3.5)。 此控件包含多个子控件 – 一个面板,一对标签,一对文本框以及另一个自定义控件。 我想在基本控件的任何地方处理右键单击 – 所以右键单击任何子控件(或面板情况下的子控件)。 我想这样做,以便它可以维护,如果有人对控制器进行更改,而无需为处理新的控件,例如连线。 首先我尝试覆盖WndProc,但正如我怀疑的那样,我只直接在窗体上获取消息,而不是任何子项。 作为一个半黑客,我在InitializeComponent后添加了以下内容: foreach (Control c in this.Controls) { c.MouseClick += new MouseEventHandler( delegate(object sender, MouseEventArgs e) { // handle the click here }); } 这现在得到支持事件的控件的点击,但是例如,标签仍然没有得到任何东西。 有没有简单的方法来做到这一点,我俯瞰?
我想要实现以下使用C ++模板元编程。 我希望build立一个types列表,然后把这些types一起收集起来,并在列表中进一步编译处理。 举个例子: foo.h中: class Foo { … }; // INSERT ANY CODE HERE bar.h: class Bar { … }; // INSERT ANY CODE HERE main.h: #include "foo.h" #include "bar.h" struct list_of_types { typedef /* INSERT ANY CODE HERE */ type; }; 我可以插入任何代码到上面的插槽中,只要list_of_types :: typeparsing为包含typesFoo和Bar的列表的某种表示(例如boost :: mpl :: vector)。 以下限制适用: foo.h中的代码不应该知道bar.h中的代码,反之亦然。 应该可以改变main.h中的#include指令的顺序,而不是更改任何其他代码。 在main.h中的代码不应该改变,如果我进一步包含进一步的头添加到列表中的types。 types列表必须在编译时可用。 […]
美好的一天, 我有一些图像权限的麻烦。 我正在从文件加载图像,resize,然后将其保存到另一个文件夹。 我然后显示这样的: uriSource = new Uri(Combine(imagesDirectoryTemp, generatedFileName), UriKind.Absolute); imgAsset.Source = new BitmapImage(uriSource); 这工作正常,麻烦来了,如果用户然后select另一个图像后,并试图将其保存在原始文件。 保存图像时生成exception"ExternalException: A generic error occurred in GDI+." 经过一番玩耍后,我已经缩小了错误imgAsset.Source = new BitmapImage(uriSource); 作为删除这一行,而不是设置的图像源将允许我覆盖这个文件很多次。 我也试着把源头放在别的东西上,然后重新保存,希望旧的引用能够被处理,事实并非如此。 我怎么能通过这个错误? 谢谢,Kohan 编辑 现在使用这个代码,我没有得到例外,但图像源不更新。 此外,因为我不使用SourceStream,即时消息不知道我需要处理得到这个工作。 uriSource = new Uri(Combine(imagesDirectoryTemp, generatedFileName), UriKind.Absolute); imgTemp = new BitmapImage(); imgTemp.BeginInit(); imgTemp.CacheOption = BitmapCacheOption.OnLoad; imgTemp.UriSource = uriSource; imgTemp.EndInit(); imgAsset.Source = imgTemp;
不用多说下面的代码: #include <utility> #include <vector> #include <iostream> #include <iterator> using namespace std; typedef pair<char, char> PAIR; ostream& operator <<(ostream& os, const PAIR& r) { return os << r.first; } int main() { vector<PAIR> coll; cout << coll[0]; // OK. // The following line will cause a compilation error! Why??? copy(coll.begin(), coll.end(), ostream_iterator<PAIR>(cout)); }
我想有一个通用的可重用的代码包装EAP模式作为任务 ,类似于什么Task.Factory.FromAsync的BeginXXX/EndXXX APM模式 。 例如: private async void Form1_Load(object sender, EventArgs e) { await TaskExt.FromEvent<EventArgs>( handler => this.webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(handler), () => this.webBrowser.Navigate("about:blank"), handler => this.webBrowser.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(handler), CancellationToken.None); this.webBrowser.Document.InvokeScript("setTimeout", new[] { "document.body.style.backgroundColor = 'yellow'", "1" }); } 到目前为止,它看起来像这样: public static class TaskExt { public static async Task<TEventArgs> FromEvent<TEventArgs>( Action<EventHandler<TEventArgs>> registerEvent, Action action, […]
我想在C#或C ++中提取一个数组的所有可能的子集,然后计算所有子集数组各自元素的总和,以检查它们中有多less个与给定数相等。 我正在寻找的是algorithm。 我理解这里的逻辑,但是现在我还没能实现这个逻辑。
我想用一些许可制度独一无二的东西。 我决定从Win32_Processorpipe理类使用ProcessorID。 我尝试过两种不同的处理器types相同的系统。 它显示两个系统相同的processorID。 我正在使用这个代码 public static String GetCPUId() { String processorID = ""; ManagementObjectSearcher searcher = new ManagementObjectSearcher( "Select * FROM WIN32_Processor"); ManagementObjectCollection mObject = searcher.Get(); foreach (ManagementObject obj in mObject) { processorID = obj["ProcessorId"].ToString(); } return processorID; }
我需要从Linq DataContext的表名获取表数据。 而不是这个 var results = db.Authors; 我需要做这样的事情。 string tableName = "Authors"; var results = db[tableName]; 它可以是DataContext中可用的任何表名。