小编acc*_*ews的帖子

为什么MISRA C声明指针的副本可能导致内存异常?

MISRA C 2012指令4.12是"不应使用动态内存分配".

例如,该文档提供了以下代码示例:

char *p = (char *) malloc(10);
char *q;

free(p);
q = p; /* Undefined behaviour - value of p is indeterminate */
Run Code Online (Sandbox Code Playgroud)

该文件指出:

尽管在调用free之后存储在指针中的值没有改变,但是在某些目标上,它所指向的内存不再存在,并且复制该指针的行为 可能导致内存异常.

几乎所有的句子我都很好,但结束了.由于p和q都在堆栈上分配,指针的副本如何导致内存异常?

c pointers memory-management misra

37
推荐指数
2
解决办法
2683
查看次数

无法在Swift中分配类型UnsafeMutablePointer ObjCBool​​的值

我对Objective C不熟悉

我正在使用私有框架,需要能够从我的Swift代码中更改其中一个属性.

该属性在Objective C中以这种方式声明:

@property (nonatomic, assign) BOOL *isSSNField;
Run Code Online (Sandbox Code Playgroud)

在swift中我试图以这种方式改变属性的值:

myClass.isSSNField = true
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误

Cannot assign a value of type 'Bool' to a value of type 'UnsafeMutablePointer<ObjcBool>'
Run Code Online (Sandbox Code Playgroud)

我不知道从哪里开始,或者为什么我得到这个错误

pointers casting objective-c unsafe-pointers swift

12
推荐指数
4
解决办法
1万
查看次数

在c#.net中应用程序和应用程序有什么区别?

c#AppApplicationc#之间有什么区别吗?

我试图App.current.Resources在主WPF应用程序中加载的控件库中使用.但这不可能直接,但同时它允许我使用Application.current.Resources

任何人都可以帮助我理解这两者之间的基本差异.是否有任何缺陷使用Application.Current.Resources而不是App.current.Resources

.net c# wpf

7
推荐指数
1
解决办法
1226
查看次数

没有Internet连接,使用Open MPI的C++程序无法运行

MPI存在问题 - 当我的电脑上有互联网连接时,程序可以正常工作,但没有它就无法正常工作.

我收到了这个错误:

orte_init由于某种原因,它似乎失败了; 你的并行过程很可能会中止.并行过程可能会失败的原因有很多orte_init; 其中一些是由于配置或环境问题.这种失败似乎是内部失败; 这里有一些额外的信息(可能只与Open MPI开发人员有关):

orte_rml_base_select失败 - >返回值错误(-1)而不是ORTE_SUCCESS

这个问题的原因是什么?

c++ mpi openmpi

6
推荐指数
0
解决办法
516
查看次数

Swift 4:Strings引用计数以及如何计算

此性能优化WWDC视频表明字符串是引用计数的,因为它们在堆上.这对使用Strings的结构的性能以及Swift 4中是否有某些变化有影响(现在Strings又是集合 - 带有写入时的副本).好奇如何证明这一点并获得实际计数. CFGetRetainCount - 不适用于字符串.

请参阅https://developer.apple.com/videos/play/wwdc2016/416/

在此输入图像描述

使用Swift 4.

string optimization performance reference-counting swift

6
推荐指数
1
解决办法
365
查看次数

如何在命名空间内导入C++类的dll

我读了一些文档,给出了与C兼容的功能的简单示例.

__declspec(dllexport) MyFunction();
Run Code Online (Sandbox Code Playgroud)

我很开心.我写了一个小应用程序使用这个dll的功能.我使用显式链接

LoadLibrary() 
Run Code Online (Sandbox Code Playgroud)

功能.C风格的功能没有问题.但是当我把我的班级写成

namespace DllTest
{
class Test
{
public:
    __declspec(dllexport) Test();
    __declspec(dllexport) void Function( int );
    __declspec(dllexport) int getBar(void);
private:
    int bar;
};

}
#endif
Run Code Online (Sandbox Code Playgroud)

它编译得很好,并且创建了Dll.使用C风格函数时,我只是从LoadLibrary()和GetProcAddress(...)函数中获取函数指针.

我之前的用法是

typedef void (*Function)(int);

int main()
{
   Function _Function;
   HINSTANCE hInstLibrary = LoadLibrary(TEXT("test.dll"));

   if (hInstLibrary)
   {
      _Function = (Function)GetProcAddress(hInstLibrary,"Function");
     if (_Function)
     {
        // use the function
Run Code Online (Sandbox Code Playgroud)

但现在我不知道如何实例化我的课程?我如何使用显式链接或隐式链接?

任何有关代码示例的帮助将不胜感激.

c++ dll explicit dllimport linkage

5
推荐指数
1
解决办法
9196
查看次数

如何在Windows应用商店(WinRT)应用程序中使用C#检查CapsLock按钮的状态

我想在PasswordBox中键入内容时,如果CapsLock按钮为On,则会发出弹出警告.

并不想知道按下的键是否是CapsLock

我检查了旧的,

KeyboardDevice .NET 3.5

Control.IsKeyLocked() Windows窗体

Console.CapsLock在Windows 8.1 Store Application中不可用

Keyboard.GetKeyStates在Windows 8.1 Store Application中不可用

和WinApi Style调用.

他们似乎都不合适,任何人都有一个建议

c# windows-runtime winrt-xaml windows-store-apps

5
推荐指数
1
解决办法
1575
查看次数

对两个TextField使用相同的UIDatePicker

我感到有两个文本框,没有fromdate和todate.how从同一datepicker.i得到不同的日期,尝试一些东西,最终在得到相同的日期在两个文本框时更改日期.

-(IBAction)dateValueChanged:(id)sender
{
        UIDatePicker *picker = (UIDatePicker *)sender;
        NSDate *dateSelected1 = [picker date];
        NSDate *dateSelected2 = [picker date];

        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"dd-MM-yyyy"];
        self.fromTextField.text = [dateFormatter stringFromDate:dateSelected1];
       self.toTextField.text = [dateFormatter stringFromDate:dateSelected2];
}
Run Code Online (Sandbox Code Playgroud)

xcode objective-c uidatepicker uitextfield ios

4
推荐指数
1
解决办法
3918
查看次数

如何在C++ DLL中释放已分配的内存

我有以下代码来加密C++ DLL中的字符串

EXPORT WCHAR* EncryptString(WCHAR* stringToEncrypt) {
    aes_context ctx;

    WCHAR* in = stringToEncrypt;
    WCHAR* out;
    WCHAR* key = L"TestKey";

    BYTE* buffEnc = (BYTE*)malloc(16);
    BYTE* keyBuffEnc = (BYTE*)malloc(32);

    memset(buffEnc, 0, 16);
    memset(keyBuffEnc, 0, 32);

    memcpy(buffEnc, in, wcslen(in) * 2);
    memcpy(keyBuffEnc, key, wcslen(key) * 2);
    aes_set_key(&ctx, keyBuffEnc, 256);

    aes_encrypt(&ctx, buffEnc, buffEnc);
    out = (WCHAR*)buffEnc;

    // free(buffEnc);   
    // free(keyBuffEnc);

    return out;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我无法释放分配的内存,否则结果会被破坏.我想知道如何在不丢失结果的情况下释放使用过的内存?我要改变返回值的类型吗?

在此先感谢您的帮助.迎接亨氏

c++ dll winapi memory-management

2
推荐指数
2
解决办法
3030
查看次数